【发布时间】:2018-06-27 00:22:28
【问题描述】:
我想用np.nan 替换列'b' 中的所有负 数字
- 在 df 上使用方法
- 没有到位。
这是示例框架:
pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
请参阅this question 了解就地和非方法解决方案。
【问题讨论】:
我想用np.nan 替换列'b' 中的所有负 数字
这是示例框架:
pd.DataFrame({'a': [1, 2] , 'b': [-3, 4], 'c': [5, -6]})
请参阅this question 了解就地和非方法解决方案。
【问题讨论】:
如果 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)))
【讨论】:
您可以使用 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
【讨论】: