![](/img/trans.png)
[英]Set the values out of the defined interval limits to a given value (f.e. NaN) for a column in pandas data frame
[英]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
需要注意的几点:
list
与set
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.