1

给定以下数据框:

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)

我需要用 np.nan 替换列 B 中小于 0 的所有值(例如);我试过了:

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
4

2 回答 2

0

试试这个代码:

for i in range (0,len(df.columns)):
    x=df.columns[i]
    df[df[x]<0]=np.nan
于 2018-05-29T09:19:32.330 回答
0

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
于 2018-05-29T10:36:07.940 回答