【问题标题】:Set the values out of the defined set to a given value (f.e. NaN) for a column in pandas data frame将定义集中的值设置为 Pandas 数据框中列的给定值(f.e. NaN)
【发布时间】:2019-01-15 11:04:46
【问题描述】:

拥有一组已定义的有效值,其中的所有 pandas 数据框列值都应设置为给定值 f.e. NaN。集合和数据框中包含的值可以假定为数值类型。

具有以下有效值集和数据框:

valid = {5, 22}
df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})

    a   b
0   5  12
1   1   3
2   7  10
3  22   9

a 列上设置有效值将导致:

     a   b
0    5  12
1  NaN   3
2  NaN  10
3   22   9

【问题讨论】:

    标签: python pandas dataframe value-restriction


    【解决方案1】:

    你可以使用pd.Series.where:

    df['a'].where(df['a'].isin(valid), inplace=True)
    
    print(df)
    
          a   b
    0   5.0  12
    1   NaN   3
    2   NaN  10
    3  22.0   9
    

    注意几点:

    【讨论】:

      【解决方案2】:

      为什么不isin

      df.loc[~df['a'].isin(valid),'a']=pd.np.nan
      

      示例

      import pandas as pd
      valid = {5, 22}
      df = pd.DataFrame({'a': [5, 1, 7, 22],'b': [12, 3 , 10, 9]})
      df.loc[~df['a'].isin(valid),'a']=pd.np.nan
      print(df)
      

      输出:

            a   b
      0   5.0  12
      1   NaN   3
      2   NaN  10
      3  22.0   9
      

      【讨论】:

        猜你喜欢
        • 2022-12-09
        • 2016-10-24
        • 2020-04-14
        • 1970-01-01
        • 2021-06-09
        • 2023-01-10
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多