【问题标题】: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 的数据集。我打印了整个文件列表,我想要连接的数据集都在那里。对为什么会出现这种情况有任何见解吗?谢谢!

【问题讨论】:

    标签: pandas concatenation


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多