在方法链中用 nan 替换数据框列的负值

Hat*_*sut 5 python pandas

我想,以取代np.nan所有的负面是在列号 'b'

  • 使用 df 上的方法
  • 不到位。

这是示例框架:

pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
Run Code Online (Sandbox Code Playgroud)

有关就地和非方法解决方案,请参阅此问题

Psi*_*dom 6

如果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
Run Code Online (Sandbox Code Playgroud)

为了获得更好的链接行为,您可以使用lambda以下函数assign

df.assign(b = lambda x: x.b.where(x.b.ge(0)))
Run Code Online (Sandbox Code Playgroud)