我有一个数据框,我想在一列中替换一些值。 我的专栏:
col1
0 0.0
1 -89999991.0
2 1.0
3 2.0
4 0.0
5 11.0
我想使用<0 by 0
替换col1中的所有值df.loc[df.col1 <0, 'col2'] = 0
并将它们写入col2:
col1
0 0.0
1 0.0
2 1.0
3 2.0
4 0.0
5 11.0
但问题是它取代了所有的NAs值:
col2
0 NA
1 0.0
2 NA
3 NA
4 NA
5 NA
我不明白问题出在哪里。
答案 0 :(得分:2)
需要mask
替换条件:
df['col2'] = df['col1'].mask(df.col1 <0, 0)
df['col2'] = np.where(df.col1 <0, 0, df['col1'])
print (df)
col1 col2
0 0.0 0.0
1 -89999991.0 0.0
2 1.0 1.0
3 2.0 2.0
4 0.0 0.0
5 11.0 11.0
clip_lower
的另一个解决方案:
df['col2'] = df['col1'].clip_lower(0)
print (df)
col1 col2
0 0.0 0.0
1 -89999991.0 0.0
2 1.0 1.0
3 2.0 2.0
4 0.0 0.0
5 11.0 11.0
答案 1 :(得分:0)
使用df.apply
df['col2'] = df['col1'].apply(lambda x: max(x,0))