Как сделать условный оператор, создав новый фрейм данных (Pandas) - PullRequest
2 голосов
/ 22 мая 2019

У меня есть MultiIndex dataframe, для которого я хотел бы создать условный оператор, который сказал бы в каждой конкретной группе столбцов «A», если значение в столбце «F»> 0, то вся эта группа (из столбец A) должен быть скопирован в новый фрейм данных (newdf) для дальнейшей обработки.

Вот как выглядит два ряда df:

  A         B            C          D           E      F   G    H 

 A8374D  []KLJEFSIJSE  some;text   more,text   12.4   4.6   13  X5

         []BKFLKJLJLK  text;some  other,stuff  65.0   6.5   11  Y0      

...

Вот что у меня есть (что не работает)

for row in df['A']:
   newdf = df['F'].where(df['F'] > 0)
print(newdf)

Сообщение об ошибке:

KeyError: 'A'

1 Ответ

0 голосов
/ 22 мая 2019

Полагаю, А - один из ваших мультииндексов.Я хотел бы сделать A не индексом

df = df.reset_index()

, а затем, я думаю, вы хотите оставить A, если ANY F в группе A> 0

df_new = df.groupby('A').apply(lambda x: (x.F > 0).any()).to_frame('WANT').reset_index()

df_final = df[df.A.isin(df_new.loc[df_new.WANT == 1,'A'])]

Если вы хотите убедиться, что значения ALL F в группе A равны> 0, то измените значение на

(x.F > 0).all()

Пожалуйста,Я знаю, если у вас есть другие вопросы.Если вам это нравится, пожалуйста, проголосуйте за меня

...