Маска панд при нескольких условиях - PullRequest
0 голосов
/ 11 мая 2019

В моем фрейме данных я хочу заменить каждое значение ниже 1 и больше 5 на nan.

Этот код работает

persDf = persDf.mask(persDf < 1000)

, и я получаю каждое значение в виде нан, но это не так:

persDf = persDf.mask((persDf < 1) and (persDf > 5))

, и я понятия не имею, почему это так,Я проверил справочную страницу и различные решения по примерно схожим проблемам, но не смог найти решение.У кого-нибудь есть идея, которая может мне помочь в этом?

1 Ответ

1 голос
/ 11 мая 2019

Используйте оператор |, поскольку значение не может быть < 1 AND > 5:

persDf = persDf.mask((persDf < 1) | (persDf > 5))

Другой метод - использовать np.where и вызывать его внутри pd.DataFrame:

pd.DataFrame(data=np.where((df < 1) | (df > 5), np.NaN, df), 
             columns=df.columns)
...