繁体   English   中英

对于pandas数据框中的列,将定义的集合中的值设置为给定值(f.e.NaN)

[英]Set the values out of the defined set to a given value (f.e. NaN) for a column in pandas data frame

如果有一组已定义的有效值,则应将其中的所有pandas数据帧列值设置为给定值fe 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

您可以使用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

需要注意的几点:

  • 使用listset pd.Series.isin将更有效地工作。 另请参阅Pandas pd.Series.isin性能与set与数组
  • 您的系列一定会被转换为float以来NaN被认为是float
  • 当使用inplace=True时,操作不需要赋值给变量。

为什么不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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM