【发布时间】:2021-09-06 09:37:57
【问题描述】:
我需要附加熊猫数据框。但我发现追加非常慢。此链接Improve Row Append Performance On Pandas DataFrames 建议使用 from_dict 而不是 append。我尝试做同样的事情,但我遇到了问题,将数据帧转换为_dict,然后从 dict 转换回数据帧。
我有这个数据框 df
date open high low close volume average barCount simb
0 3/31/2020 81.43 81.49 78.56 78.91 183417 80.0940 86742 xdt
1 4/1/2020 77.00 77.38 75.35 76.57 91420 76.4395 49399 xdt
2 4/2/2020 76.12 79.66 76.00 79.44 75298 78.4080 40614 xdt
3 4/3/2020 78.79 79.99 78.18 79.45 64965 79.0490 37140 xdt
4 4/6/2020 81.08 83.12 79.60 82.73 89395 81.3605 46247 xdt
5 4/7/2020 83.45 84.48 81.76 81.93 77722 83.3980 43947 xdt
6 4/8/2020 82.50 85.39 81.05 84.95 66202 83.4955 40256 xdt
7 4/9/2020 85.00 86.50 82.95 86.04 80298 85.1100 46184 xdt
8 4/13/2020 86.32 86.48 83.52 85.85 48114 85.1790 27280 xdt
9 4/14/2020 87.00 89.54 86.50 89.14 75528 88.4410 42810 xdt
我有数千个这样的数据帧。我需要将它们转换为 dict,然后将它们全部转换回数据框,如链接所示。
我的代码
d = {}
i=0
d[i] =df.to_dict( 'index')
pd.DataFrame.from_dict(d, 'index')
我无法使用此代码获得正确的数据框。我使用了不同的选项而不是“索引”选项,但它没有帮助。如果有人可以帮助我编写代码,我将不胜感激
【问题讨论】:
-
转换为字典然后返回数据框的原因是什么?似乎效率低下。
-
@Vishnudev 据我了解 concat 的性能也很慢
-
concat与多个 dict 操作相比将是最快的。你可以试试基准测试。请不要将concat放入循环中。 -
您可以尝试的另一个选项 ->
pd.DataFrame(np.vstack([i.values for i in df_list]), columns= df1.columns)。注意:我没有做过性能比较。 -
@BogdanTitomir 不,如果你逐渐增加
pd.concat,它只会很慢。相反,将所有中间 df 附加到单个列表中,然后然后使用pd.concat(df_list)。可能没有比这更快的方法了