【问题标题】:Replacing strings (from a list) with NaN in pandas DataFrame在 Pandas DataFrame 中用 NaN 替换字符串(来自列表)
【发布时间】:2020-04-02 21:54:34
【问题描述】:

我有一个 DataFrame df 和一个字符串列表 colnames

df = pd.DataFrame({'foo': ['a', 'foo', 'c' , 'bar'], 'bar': ['foo', 'b', 'c', 'bar']})

colnames = ['foo', 'bar']

我想将我的 DataFrame df 中的 colnames 中包含的单词替换为“NaN”。但是,我只想替换值而不是列名。输出应如下所示:

    foo bar
0   a   NaN
1   NaN b
2   c   c
3   NaN NaN

【问题讨论】:

    标签: python string pandas dataframe replace


    【解决方案1】:

    您也可以使用索引掩码:

    df[~df.isin(colnames)] 
    

    输出

       foo  bar
    0    a  NaN
    1  NaN    b
    2    c    c
    3  NaN  NaN
    

    【讨论】:

      【解决方案2】:

      让我们试试replace

      df.replace(df.columns,np.nan)
         foo  bar
      0    a  NaN
      1  NaN    b
      2    c    c
      3  NaN  NaN
      

      【讨论】:

        【解决方案3】:

        试试这个:

        df.replace(colnames, np.nan)
        

        输出

           foo  bar
        0    a  NaN
        1  NaN    b
        2    c    c
        3  NaN  NaN
        

        【讨论】:

          【解决方案4】:

          这里isinmask

          df.mask(df.isin(colnames))
          

          输出:

             foo  bar
          0    a  NaN
          1  NaN    b
          2    c    c
          3  NaN  NaN
          

          【讨论】:

            猜你喜欢
            • 2023-01-24
            • 1970-01-01
            • 2017-04-04
            • 1970-01-01
            • 1970-01-01
            • 2015-01-06
            • 2017-08-21
            • 2018-11-14
            相关资源
            最近更新 更多