提问人:Krzysztof Słowiński 提问时间:8/8/2018 更新时间:8/8/2018 访问量:76
将定义集之外的值设置为 pandas 数据框中列的给定值(例如 NaN)
Set the values out of the defined set to a given value (f.e. NaN) for a column in pandas data frame
问:
有了一组定义的有效值,它的所有 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
答:
2赞
jpp
8/8/2018
#1
您可以使用 pd。系列:
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
需要注意的几点:
pd.Series.isin
与 a 相比,将更有效地工作。另请参阅 Pandas pd。Series.is在集合与数组的性能中。list
set
- 您的系列必然会转换为 since 被考虑。
float
NaN
float
- 使用时,该操作不需要赋值给变量。
inplace=True
2赞
U13-Forward
8/8/2018
#2
为什么不是:
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
评论