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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个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组合成一个pandas数据帧。或者,使用chunksize选项时将大型表直接读入数据帧的方法将非常有用。

答案

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

import pandas as pd
df = pd.concat(list_of_dataframes)
另一答案

如果数据帧不是都具有相同的列,请尝试以下操作:

df = pd.DataFrame.from_dict(map(dict,df_list))
另一答案

您也可以使用函数式编程:

reduce(lambda df1, df2: df1.merge(df2, "outer"), mydfs)

以上是关于将一个pandas数据帧列表连接在一起的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 基于连接将列从一个数据帧添加到另一个数据帧

性能将列表列表解压缩到pandas数据帧中

使用多索引迭代地连接 pandas 数据帧

Pandas:将 Lambda 应用于多个数据帧

将列表写入 pandas 数据帧到 csv,从 csv 读取数据帧并再次转换为列表而无需字符串

Pandas - 如何将 Parquet 数据帧保存到本地磁盘?