Невозможно использовать fillna при введении условия - SyntaxError: неверный синтаксис - PullRequest
0 голосов
/ 26 мая 2018

Учитывая следующий DataFrame:

d = {'A': [1,2,np.nan, -2, -1], 'B':[5,-1,np.nan,2,-1], 'C':[1,2,3,4,-1]}
df = pd.DataFrame(d)

Мне нужно заменить все значения меньше 0 в столбце B на np.nan (например);Я пробовал:

df  = df.apply(lambda x: fillna(value = np.nan) if x < 0)

, но выдает следующую ошибку:

File "<ipython-input-157-2d34a150c603>", line 1
  df  = df.apply(lambda x: fillna(value = np.nan) if x < 0)
SyntaxError: invalid syntax

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Использование pd.DataFrame.loc с маской:

df.loc[df['B'] < 0, 'B'] = np.nan

print(df)

     A    B  C
0  1.0  5.0  1
1  2.0  NaN  2
2  NaN  NaN  3
3 -2.0  2.0  4
4 -1.0  NaN -1
0 голосов
/ 29 мая 2018

Попробуйте этот код:

for i in range (0,len(df.columns)):
    x=df.columns[i]
    df[df[x]<0]=np.nan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...