连接数据集的问题[重复]
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连接会导致更大的输出文件大小