【问题标题】:Is there a way to write & save several csv or excel files based on different names in a column of a dataframe?有没有办法根据数据框列中的不同名称编写和保存多个 csv 或 excel 文件?
【发布时间】:2019-07-03 16:23:26
【问题描述】:

我有一个包含大约 2000 个名称的大型 DataFrame,其中包含其他信息和与其各自名称对应的图表。我想为 DataFrame 中的每个名称创建一个单独的文件(最好是 excel 文件,但 csv 可以)。

df = pd.DataFrame({'name': ['Ben','Steve','Mary','Ben','Steve','Mary'], 'value': [1,2,3,4,5,6]})

这个问题与我想要做的类似,只是它没有告诉您如何以一种可以保存每个名称的 csvs 的方式调用该函数。 Writing multiple csv's from a function.

我尝试过使用该功能并为其创建一条出路。我也尝试过这样的事情:

import os
g = df.groupby('name')

for n,g in df.groupby('name'):
 f_name = os.path.join('Desktop', str(n), 'Report.csv')
 g.to_csv(f_name)


def write_custom_csv(name):
   filtered = df[df['name'] == name]
   filtered.to_csv("Desktop\Report" + name + '.csv')
write_custom_csv(df)

我也尝试定义出路:

outpath = "Desktop/Report"
def write_custom_csv(name):
    filtered = df[df['name'] == name]
    filtered.to_csv(outpath + name + '.csv')
write_custom_csv(df)

预期的输出将是 Ben、Steve 和 Mary 各自的单独 csv 文件。 Ben 将在文件中包含 1 和 4、Steve 2 和 5,以及 Mary 3 和 6。该文件的名称将包含其名称,例如 BenReport.csv。

输出没有excel文件和这个错误信息。

TypeError: 无法将 ['Desktop/Report'] 与块值进行比较

【问题讨论】:

    标签: python export-to-csv export-to-excel


    【解决方案1】:

    您尝试的第一种方法应该可行。你得到的错误是什么?

    第二种方法很接近,但是当您尝试仅传递名称时,您将传递整个 DataFrame。试试吧:

    def write_custom_csv(df):
      for name in df['name'].unique():
        filtered = df[df['name'] == name]
        filtered.to_csv(os.path.join('Desktop', 'Report {}.csv'.format(name))
    
    write_custom_csv(df)
    

    【讨论】:

    • 这是我在第一个错误中遇到的错误: FileNotFoundError: [Errno 2] No such file or directory: 'Desktop\\Ben\\Report.csv' 您的建议虽然有效!非常感谢。
    猜你喜欢
    • 2020-11-25
    • 1970-01-01
    • 2021-05-16
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多