连接数据集的问题[重复]

Posted

技术标签:

【中文标题】连接数据集的问题[重复]【英文标题】:Issue in concatenating datasets [duplicate] 【发布时间】:2021-12-19 20:55:17 【问题描述】:

我希望连接的文件夹中有大约 500 个数据集。它们都有相同的列名:“Year”、“ZIP Code”、“Var1”、“Var2”、“Var3”。

我使用以下代码循环浏览文件夹中的文件:

directory = '/MyDirectory'
os.chdir(directory) 
files = os.listdir()

for f in files:
    if f.endswith('.csv'):
        combined_dataset = pd.concat([pd.read_csv(f)])

当我输出数据集时,仅显示 2019 年和邮政编码 000001 的数据集。我打印了整个文件列表,我想要连接的数据集都在那里。对为什么会出现这种情况有任何见解吗?谢谢!

【问题讨论】:

【参考方案1】:

当您想将 df1 与 df2 连接时,您必须:

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

我建议您创建一个新的数据框并连接加载的文件。

combined_dataset = pd.DataFrame()

for f in files:
    if f.endswith('.csv'):
        combined_dataset = pd.concat([combined_dataset , pd.read_csv(f)], axis = 1)

【讨论】:

这当然是正确的,1 列表上的 concat 不会增长 DataFrame,只会在每次迭代时覆盖它。话虽如此,NEVER grow a DataFrame! 的时间复杂度是二次方的,并且可能非常慢,尤其是结合 read_csv 已经是一个非常慢的读取操作。 您现在可以将所有数据帧存储在一个列表中,然后最后进行连接。容易peasy:D

以上是关于连接数据集的问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用空数据集的Spark SQL连接会导致更大的输出文件大小

Java Spark:使用未知连接列名称连接的数据集的 Spark 错误解决方法

数据库连接池简要实现

错题纠正

使用唯一数据连接 SQL 表(列数不同!)

错题集07