【问题标题】:How to replace all values in a Pandas Dataframe not in a list? [duplicate]如何替换不在列表中的 Pandas Dataframe 中的所有值? [复制]
【发布时间】:2016-04-24 08:09:33
【问题描述】:

我有一个值列表。如何替换不在给定值列表中的 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 中的所有值。我该怎么做?

【问题讨论】:

  • 用什么替换它们?
  • @DSM 字符串“无”
  • 我投票决定将此问题作为题外话来结束,因为这个问题是要求某人为他们编写代码,而不是就他们在代码中遇到的问题寻求帮助。跨度>

标签: python pandas


【解决方案1】:

您可以使用isin 来检查allowed_list 中的成员资格,~ 来否定它,然后.loc 来修改系列:

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

因为

>>> 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

【讨论】:

  • 如果我不想就地这样做怎么办?
猜你喜欢
  • 2021-09-05
  • 2020-10-15
  • 2014-06-12
  • 2015-10-09
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
相关资源
最近更新 更多