【问题标题】:Replace function python not working correctly替换函数python无法正常工作
【发布时间】:2020-08-13 09:22:45
【问题描述】:

我正在使用替换函数将数据框中的值“C”或“c”替换为 1。大多数值都是正确的,但有些值小于 1 或非常接近 0。这是我正在使用的代码。

in ---> [-,C,-,-,-,C]

df["name"]= df["name"].replace("C" and "c", int(1))

out ---> [-,1,-,0.0054,-,0.9992]

在某些情况下,结果会将c 更改为0.9992 或类似名称。

对此的任何建议都会很棒。谢谢

【问题讨论】:

  • 您的 other question 建议 df 是熊猫数据框。如果是这样,请确保为您的问题添加适当的标签。

标签: python pandas replace


【解决方案1】:

str.replace 只能用于替换单个表达式。要用相同的值替换多个表达式,您应该使用正则表达式。 我们将在这里使用re.sub,这是一种替换方法,用给定的替换字符串替换每个正则表达式匹配。

在本例中,我们希望将 cC 替换为字符 1,并且我们希望在字符串 Cabc 上执行此操作

import re

re.sub('[cC]', '1', 'Cabc')

# Output >>> 1ab1

【讨论】:

  • @Yatin 补充说明
【解决方案2】:

replace 一次使用一个子字符串。 因此,在您的情况下,您可以使用for 循环多次调用replace

for str_to_replace in ("C", "c"):
    df["name"] = df["name"].replace(str_to_remove, '1')

但在处理上/下字符串的情况下,最好使用正则表达式。

【讨论】:

  • replace 的第二个参数不能是int。但这假设 df["name"] 持有一个字符串,我怀疑情况并非如此。
  • 无论我是否使用 for 循环,我都会得到相同的结果。似乎替换函数适用于整数,但这只是我得到的结果的问题。我在我的问题中包含了更多信息,因为它有点不清楚。
猜你喜欢
  • 2019-03-05
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 2018-07-23
相关资源
最近更新 更多