我想用np.nan
替换列'b'
以下是示例框架:
pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
有关就地和非方法的解决方案,请参阅this question。
答案 0 :(得分:3)
如果assign
计为df的方法,则可以重新计算列b
并将其分配给df
以替换旧列:
df = pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
df.assign(b = df.b.where(df.b.ge(0)))
# a b c
#0 1 NaN 5
#1 2 4.0 -6
为了获得更好的链接行为,您可以将lambda
功能与assign
:
df.assign(b = lambda x: x.b.where(x.b.ge(0)))
答案 1 :(得分:2)
您可以使用 loc 函数。替换所有负值并利用numpy nan替换它们。 示例代码看起来像。
import numpy as np
df=pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
df.loc[~(df['b'] > 0), 'b']=np.nan