重复将多个 Panda 数据集导出到多个 csv 文件的任务

Posted

技术标签:

【中文标题】重复将多个 Panda 数据集导出到多个 csv 文件的任务【英文标题】:Repeat the task of exporting multiple Panda datames into multiple csv-files 【发布时间】:2021-05-01 03:35:34 【问题描述】:

我对 Pandas/Python 有点陌生(更了解 SAS),但我的任务如下:我有四个 Pandas 数据框,我想将它们中的每一个导出到一个单独的 csv 文件中。 csv 的名称应与原始数据帧相同(forsyning.csv、inntak.csv 等)。

到目前为止,我已经制作了一个包含数据帧名称的列表,然后尝试将该列表放入 for 循环中,以便一个接一个地生成一个 csv。但我只做了一半。到目前为止我的代码:

df_list = ['forsyning', 'inntak', 'behandling', 'transport']

for i in df_list:  
    i.to_csv('.csv'.format(i), index=False, decimal=',', sep=';')

我认为缺少的是正确的引用,它在上面的代码中显示“i.to_csv”,因为它现在只给我错误“'str' object has no attribute 'to_csv'”。我只是不知道如何以正确的方式扭曲这段代码 - 感谢任何关于这件事的建议。谢谢。

【问题讨论】:

【参考方案1】:

如果需要将 DataFrames 列表写入文件,您需要 2 个列表 - 第一个用于 DataFrames 对象,第二个用于字符串中的新文件名:

df_list = [forsyning, inntak, behandling, transport]
names   = ['forsyning', 'inntak', 'behandling', 'transport']

所以对于两个列表的写入使用zip 并写入df

for i, df in zip(names, df_list):  
    df.to_csv('.csv'.format(i), index=False, decimal=',', sep=';')

或者使用 dict.items() 的 DataFrames 和循环值字典:

df_dict = 'forsyning': forsyning, 'inntak':inntak,
            'behandling': behandling, 'transport': transport

for i, df in df_dict.items():  
    df.to_csv('.csv'.format(i), index=False, decimal=',', sep=';')

【讨论】:

你搞定了...非常感谢,两个列表在这里解决了我的小问题 如何根据数据框的名称创建字符串?那就是从列表中的第一个数据帧生成'forsyning'? (或相反)然后你可以消除第二个列表的需要。 老实说,我并没有从数据框的名称中派生字符串——为了这个例子,我只是手动编写了它。但是,如果您有办法根据第二个(反之亦然)得出第一个列表,我愿意接受建议。这可能会进一步简化代码(消除您提到的第二个列表)。【参考方案2】:

您的 df_list 应该有一个 dataframe 对象列表。而是您似乎将str 格式的数据框名称作为元素。 我相信你的 df_list 应该是:

df_list = [forsyning, inntak, behandling, transport]

【讨论】:

同意,这是解决方案的一部分...感谢您的评论

以上是关于重复将多个 Panda 数据集导出到多个 csv 文件的任务的主要内容,如果未能解决你的问题,请参考以下文章

将多个结果写入 CSV [重复]

如何将数据集导出到记事本?

MySQL 将多个表中的特定字段导出到一个 csv 文件中?创建表输出

将多个数据集导出到一个电子表格

MySQL:将多个表导出到 CSV 文件

将数据框保存到多个 CSV,保留数据框名称