【问题标题】:reading multiple csv file into a big pandas data frame by appending the columns of different size通过附加不同大小的列将多个csv文件读入一个大熊猫数据框
【发布时间】:2014-08-27 19:35:39
【问题描述】:

所以我在循环中创建一些数据框并将它们保存为 csv 文件。数据框具有相同的列但长度不同。我希望能够将这些数据帧连接成一个数据帧,该数据帧的所有列都类似于

df1 A B C 0 0 1 2 1 0 1 0 2 1.2 1 1 3 2 1 2

df2 A B C 0 0 1 2 1 0 1 0 2 0.2 1 2

df3 A B C 0 0 1 2 1 0 1 0 2 1.2 1 1 3 2 1 4 4 1 2 2 5 2.3 3 0

我想得到类似的东西

df_big A B C A B C A B C 0 0 1 2 0 1 2 0 1 2 1 0 1 0 0 1 0 0 1 0 2 1.2 1 1 0.2 1 2 1.2 1 1 3 2 1 2 2 1 4 4 1 2 2 5 2.3 3 0 这是可以在 pandas 中完成的事情吗?

【问题讨论】:

标签: python csv pandas


【解决方案1】:

你可以使用pd.concat:

df_big = pd.concat([df1, df2, df3], axis=1)

产量

     A   B   C    A   B   C    A  B  C
0  0.0   1   2  0.0   1   2  0.0  1  2
1  0.0   1   0  0.0   1   0  0.0  1  0
2  1.2   1   1  0.2   1   2  1.2  1  1
3  2.0   1   2  NaN NaN NaN  2.0  1  4
4  NaN NaN NaN  NaN NaN NaN  1.0  2  2
5  NaN NaN NaN  NaN NaN NaN  2.3  3  0

【讨论】:

  • 它在一个循环中,所以从技术上讲,我没有 df1、df2……但我可以创建它们并在手之前保存它们。还是有办法在飞行中连接?谢谢你,速度很快。
  • 将所有DataFrames保存在一个列表中,然后调用pd.concat(list_of_dfs)一次创建df_big
  • 在循环内连接效率低下,因为每次调用pd.concat 都需要分配新的内存块并将数据从片段复制到生成的DataFrame中。这也是string concatenation should be done with str.join rather than using s += ... in a loop.的原因。
猜你喜欢
  • 2017-05-18
  • 2020-05-02
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多