将 pandas 数据帧列表连接在一起

新手上路,请多包涵

我有一个 Pandas 数据框列表,我想将它们组合成一个 Pandas 数据框。我正在使用 Python 2.7.10 和 Pandas 0.16.2

我从以下位置创建了数据框列表:

 import pandas as pd
dfs = []
sqlall = "select * from mytable"

for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000):
    dfs.append(chunk)

这将返回数据帧列表

type(dfs[0])
Out[6]: pandas.core.frame.DataFrame

type(dfs)
Out[7]: list

len(dfs)
Out[8]: 408

这是一些示例数据

# sample dataframes
d1 = pd.DataFrame({'one' : [1., 2., 3., 4.], 'two' : [4., 3., 2., 1.]})
d2 = pd.DataFrame({'one' : [5., 6., 7., 8.], 'two' : [9., 10., 11., 12.]})
d3 = pd.DataFrame({'one' : [15., 16., 17., 18.], 'two' : [19., 10., 11., 12.]})

# list of dataframes
mydfs = [d1, d2, d3]

我想将 d1d2d3 组合成一个熊猫数据框。或者,在使用 chunksize 选项时将大型表直接读入数据帧的方法会非常有帮助。

原文由 Whitebeard 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 210
2 个回答

鉴于所有数据帧都具有相同的列,您可以简单地 concat 它们:

 import pandas as pd
df = pd.concat(list_of_dataframes)

原文由 DeepSpace 发布,翻译遵循 CC BY-SA 4.0 许可协议

只是为了添加更多细节:

例子:

 list1 = [df1, df2, df3]

import pandas as pd

  • 按行连接和忽略索引
  pd.concat(list1, axis=0, ignore_index=True)

注意: 如果列名不同,则 NaN 将被插入到不同的列值

  • 按列串联并希望保留列名
  pd.concat(list1, axis=1, ignore_index=False)

如果 ignore_index=True ,列名将填充从 0 到 (n-1) 的数字,其中 n 是唯一列名的计数

原文由 rmswrp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题