将定义集合中的值设置为熊猫数据框中列的给定值(例如 NaN)



具有一组定义的有效值,所有 pandas 数据框列值都应设置为给定值,例如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

需要注意的几点:

  • set相比,pd.Series.isinlist下将更有效地工作。另见熊猫pd。Series.isin 性能与集合与数组。
  • 您的系列必然会转换为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

相关内容

  • 没有找到相关文章

最新更新