Условные дропна () панды - PullRequest
       10

Условные дропна () панды

0 голосов
/ 08 ноября 2018

У меня довольно простой вопрос: я хочу удалить строки из DataFrame на основе условия. DataFrame выглядит примерно так:

Program        act
Original RO     A
Original RO    nan
Followup RO     B
Followup RO    nan
Integral RO    nan

Я хочу удалить нули только для программ Original RO и Integral RO. Так должно выглядеть так:

Program        act
Original RO     A
Followup RO     B
Followup RO    nan

У меня всегда возникают проблемы при попытке выполнить некоторые операции над частью моего информационного кадра, а остальное оставить как есть.

Я пробовал это:

df.loc[df.Program.str.match('^(Original|Integral)')] = df.dropna()

Но не работает. Что я делаю неправильно? Заранее спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете проверить условия с помощью isin() и isna() и установить подкадр данных.

lst = ['Original RO', 'Integral RO']

df = df[~(df['Program'].isin(lst) & df['act'].isna())]

# Another one using drop.
# df = df.drop(df[(df['Program'].isin(lst) & df['act'].isna())].index)

print (df)

       Program  act
0  Original RO    A
2  Followup RO    B
3  Followup RO  NaN
...