решение для n элементов в столбце state
.
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)
, как вы можете видеть уникальное возвращаетразличные и неповторимые элементы, присутствующие в серии.
3. Для цикла
вы можете использовать for loop
для фильтрации кадра данных на основе уникальных 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)