【发布时间】:2020-11-15 18:47:09
【问题描述】:
所以我有一个数据框,我想用新字符串替换每个值。
(通常我只会做 df["col1"] = "string",但是我之前需要使用 loc,它会创建一个副本并且不会对序列进行适当的操作)
所以目前我有一个这样的 df
df = pd.DataFrame({'A': ['aaaa', 'b', 'c', 'd', 'e']})
当我用替换功能替换它时
df.A.replace(".*","test", regex= True, inplace= True)
我得到了这样的东西
但是我想要的是这样的:
为什么它给了我两次“测试”。我该如何解决?
编辑: 因此,向您展示实际问题是什么。我会给你这个例子,向你展示整个画面。 基本上我有这两个东西
df = pd.DataFrame({'A': ['aaaa', 'bbbb', 'c', 'd', 'e']})
replace_list = ["aa","bb"]
现在我希望 df 将列表中存在项目的每个条目替换为列表中的项目。所以 df 看起来像这样:
【问题讨论】:
-
您的匹配次数介于零次和无限次之间,导致两个位置。一个用于字符 a 等,一个用于紧接其后。这是因为您没有指定起始位置。如果你包含一个起始字符串 ancor 它将很好地工作
-
是的,大概就是这样。但是开始字符串 ancor 是什么意思?
-
我的意思是尝试
^.* -
你可以看到它不起作用。在我原来的 df 我有一个地方列表。但他们中的许多人的名字不正确。如果它们的名称是通用名称的一部分,我想用通用名称替换它们。
-
@JvdV 如果你提出新的答案,我可以接受