我在 for 循环中将行附加到 pandas DataFrame,但最后数据框始终为空。我不想将行添加到数组然后调用 DataFrame 构造函数,因为我的实际 for 循环处理大量数据。我也试过 pd.concat
但没有成功。任何人都可以强调我缺少什么来使附加语句起作用吗?这是一个虚拟示例:
import pandas as pd
import numpy as np
data = pd.DataFrame([])
for i in np.arange(0, 4):
if i % 2 == 0:
data.append(pd.DataFrame({'A': i, 'B': i + 1}, index=[0]), ignore_index=True)
else:
data.append(pd.DataFrame({'A': i}, index=[0]), ignore_index=True)
print data.head()
Empty DataFrame
Columns: []
Index: []
[Finished in 0.676s]
原文由 calpyte 发布,翻译遵循 CC BY-SA 4.0 许可协议
每次调用 append 时,Pandas 都会返回原始数据框的副本以及新行。这称为二次复制,这是一个 O(N^2) 操作,很快就会变得非常慢(尤其是当您有大量数据时)。
在你的情况下,我建议使用列表,附加到它们,然后调用数据框构造函数。
时序