是否有一种方法可以基于数据框的一列中的不同名称编写和保存多个csv或excel文件?

2024-10-03 23:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大约2000个名字的大数据框,其中有其他信息和图表,与它们各自的名字相匹配。我想为数据框中的每个名称创建一个单独的文件(最好是excel文件,但csv有效)

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

这个问题与我想做的类似,只是它没有告诉您如何调用函数,以保存每个名称的CSV。 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:

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文件。本将在文件中包含1和4,史蒂夫2和5,玛丽3和6。文件名中会有它们的名称,如BenReport.csv

输出没有excel文件,并且显示此错误消息

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


Tags: 文件csvtonamereport名称dfcustom
1条回答
网友
1楼 · 发布于 2024-10-03 23:27:01

你尝试的第一种方法应该有效。你犯了什么错误

第二种方法很接近,但是当您尝试只传递名称时,您正在传递整个数据帧。请尝试:

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)

相关问题 更多 >