我试图根据一列的值导出多个Excel。例如:
import pandas as pd
df = pd.DataFrame({'state':['PA','PA','TX','TX'],'county':['Centre','Berks','Austin','Taylor'],'a':[4,3,2,1],'b':[3,4,5,6]})
df
如何基于“状态”列的属性将此数据框导出到多个Excel。例如,仅导出带有“ state” =“ PA”的单独的excel和带有“ state” =“ TX”的另一个excel。谢谢。
答案 0 :(得分:1)
state
列中n个元素的解决方案。
1。想象这是您的数据框
import pandas as pd
df = pd.DataFrame({'state':['PA','PA','TX','TX','RX'],'county':['Centre','Berks','Austin','Taylor','Mike'],'a':[4,3,2,1,0],'b':[3,4,5,6,7]})
print(df)
state county a b
0 PA Centre 4 3
1 PA Berks 3 4
2 TX Austin 2 5
3 TX Taylor 1 6
4 RX Mike 0 7
2。想法:Series.unique
df['state'].unique()
array(['PA', 'TX', 'RX'], dtype=object)
您可以看到unique返回了系列中存在的不同且不可重复的元素。
3。对于循环
您可以使用for loop
根据唯一性返回的unique state
元素来过滤数据框:
for state in df['state'].unique():
print(df[df['state'].eq(state)])
print('-'*20)
state county a b
0 PA Centre 4 3
1 PA Berks 3 4
--------------------
state county a b
2 TX Austin 2 5
3 TX Taylor 1 6
--------------------
state county a b
4 RX Mike 0 7
4发送给excel
for state in df['state'].unique():
df[df['state'].eq(state)].to_excel(state+'.xlsx')
使用DataFrame.eq,DataFrame.ne和运算符~
我对您使用〜的评论的建议是因为只有两种状态。
以下表达式是等效的:
~df.eq(a)
df.ne(a)