如何基于一列导出多个Excel

时间:2019-10-06 19:49:04

标签: excel pandas export

我试图根据一列的值导出多个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。谢谢。

1 个答案:

答案 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.eqDataFrame.ne和运算符~

我对您使用〜的评论的建议是因为只有两种状态。

以下表达式是等效的:

~df.eq(a)
 df.ne(a)