如何替换 Pandas Dataframe 中不在列表中的所有值? [复制]

2024-06-20

我有一个值列表。如何替换 Dataframe 列中不在给定值列表中的所有值?

例如,

>>> df = pd.DataFrame(['D','ND','D','garbage'], columns=['S'])
>>> df
      S
0    D
1    ND
2    D
3  garbage

>>> allowed_vals = ['D','ND']

我想将数据帧 S 列中不在 allowed_vals 列表中的所有值替换为“None”。我怎样才能做到这一点?


您可以使用isin检查会员资格allowed_list, ~否定这一点,然后.loc就地修改系列:

>>> df.loc[~df["S"].isin(allowed_vals), "S"] = "None"
>>> df
      S
0     D
1    ND
2     D
3  None

because

>>> df["S"].isin(allowed_vals)
0     True
1     True
2     True
3    False
Name: S, dtype: bool

如果你想修改整个框架(不仅仅是S列),你可以制作一个框架大小的蒙版:

>>> df
         S   T
0        D   D
1       ND   A
2        D  ND
3  garbage   A
>>> df[~df.isin(allowed_vals)] = "None"
>>> df
      S     T
0     D     D
1    ND  None
2     D    ND
3  None  None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何替换 Pandas Dataframe 中不在列表中的所有值? [复制] 的相关文章

随机推荐