将 pandas 个组保存为单独的 CSV 文件
Save pandas groups to separate CSV files
是否可以在不使用 .to_csv
的情况下 return 多个 df
独立 csv's
。使用下面的代码,我手动 returning 所需的值并将它们导出到 csv。如果我只有几个文件要导出,这没问题,但如果有大量文件或文件名不断改变数据集,这可能会很麻烦。
如果您有特定的值列表并将其导出到 csv,是否有更有效的方法来 return 所需的值?
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'):
...
是否可以在不使用 .to_csv
的情况下 return 多个 df
独立 csv's
。使用下面的代码,我手动 returning 所需的值并将它们导出到 csv。如果我只有几个文件要导出,这没问题,但如果有大量文件或文件名不断改变数据集,这可能会很麻烦。
如果您有特定的值列表并将其导出到 csv,是否有更有效的方法来 return 所需的值?
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'):
...