Python 将组保存为单独的CSV文件

Python 将组保存为单独的CSV文件,python,pandas,dataframe,export-to-csv,Python,Pandas,Dataframe,Export To Csv,是否可以将多个df返回到独立的csv,而不使用.to_csv。使用下面的代码,我手动返回所需的值并将其导出到csv。如果我只有几个文件要导出,这是可以的,但是如果有大量的文件或文件名在数据集上不断变化,这可能会很麻烦 如果您有特定的值列表并将其导出到csv,是否有更有效的方法返回所需的值 import pandas as pd d = ({ 'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '

是否可以将多个df返回到独立的csv,而不使用.to_csv。使用下面的代码,我手动返回所需的值并将其导出到csv。如果我只有几个文件要导出,这是可以的,但是如果有大量的文件或文件名在数据集上不断变化,这可能会很麻烦

如果您有特定的值列表并将其导出到csv,是否有更有效的方法返回所需的值

import pandas as pd

d = ({
    'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '09:00:00', 'XX','09:15:00','XX','09:21:00','XX','09:30:00','XX','09:40:00','XX'],
    'D' : ['Home','Home','Home','Home','Away','Away','Shops','Shops','Away','Away','Shops','Shops','Home','Home','Away','Away','Home','Home'],
    'E' : ['Num:','','Num:','','Num:','','Num:','','Num:', '','Num:','','Num:','','Num:', '','Num:', ''],
    'F' : ['1','','1','','1','','1','','1', '','2','','2','','1', '','2',''],   
    'A' : ['A','','A','','A','','A','','A','','A','','A','','A','','A',''],           
    'B' : ['Stop','','Res','','Stop','','Start','','Res','','Stop','','Res','','Start','','Start','']
    })

df = pd.DataFrame(data=d)

#List of designated places
values = ['Home', 'Away', 'Shops']

#Export to csv
Home = df.loc[df['D'] == 'Home'].to_csv('Home.csv')
Away = df.loc[df['D'] == 'Away'].to_csv('Away.csv')
Shops = df.loc[df['D'] == 'Shops'].to_csv('Shops.csv')
使用isin进行筛选,然后在D上执行groupby并迭代保存到CSV

incl = ['Home', 'Away', 'Shops']    
for k, g in df[df['D'].isin(incl)].groupby('D'):
    g.to_csv(f'{k}.csv')  # '{}.csv'.format(k)
当且仅当类别多于要保存的类别时,isin筛选步骤才很重要。如果情况并非如此,并且您希望保存所有内容,您的解决方案将简化:

for k, g in df.groupby('D'):
    ...
使用isin进行筛选,然后在D上执行groupby并迭代保存到CSV

incl = ['Home', 'Away', 'Shops']    
for k, g in df[df['D'].isin(incl)].groupby('D'):
    g.to_csv(f'{k}.csv')  # '{}.csv'.format(k)
当且仅当类别多于要保存的类别时,isin筛选步骤才很重要。如果情况并非如此,并且您希望保存所有内容,您的解决方案将简化:

for k, g in df.groupby('D'):
    ...

抱歉,修复了重复链接。你可能想要这样的东西:好吧,不,这还不够。1秒钟。抱歉,修复了重复链接。你可能想要这样的东西:好吧,不,这还不够。1秒。谢谢@coldspeedt这可能是另一个问题,但我可以在导出之前添加新列吗?@PeterJames123这取决于您要添加哪些列。您需要做的任何事情都可以在for循环中完成。谢谢@coldspeed。我成功了一半,谢谢@coldspeedt这可能是另一个问题,但我可以在导出之前添加新列吗?@PeterJames123这取决于您要添加哪些列。您需要做的任何事情都可以在for循环中完成。谢谢@coldspeed。我成功了一半