【问题标题】:Replace dataframe column negative values with nan, in method chain在方法链中用 nan 替换数据框列负值
【发布时间】:2018-06-27 00:22:28
【问题描述】:

我想用np.nan 替换列'b' 中的所有 数字

  • 在 df 上使用方法
  • 没有到位。

这是示例框架:

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

请参阅this question 了解就地和非方法解决方案。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果 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)))
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 2012-10-29
        • 1970-01-01
        • 2017-04-22
        • 2020-02-26
        相关资源
        最近更新 更多