如果整个字符串等于另一个字符串,我试图替换数据帧中的字符串。我不想替换子字符串。在
所以:
如果我有df:
Index Name Age
0 Joe 8
1 Mary 10
2 Marybeth 11
当整个字符串匹配“Mary”和“Amy”时,我想替换“Mary”,所以我得到
^{pr2}$我正在做以下工作:
df['Name'] = df['Name'].apply(lambda x: x.replace('Mary','Amy'))
通过搜索我的理解是replace
setregex=False
和{
Index Name Age
0 Joe 8
1 Amy 10
2 Amybeth 11
我做错什么了?在
replace
+dict
是正确的方法(对于DataFrame,您使用的是Series.str.replace
)注意它们是不同的
Series
: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.replace.htmlDataFrame
: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html说明:
当你像这样应用它-你是在处理字符串,而不是熊猫系列:
它的意思是:
^{pr2}$解决方案:
正确使用Series.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad', axis=None)(不使用
Series.apply()
)-根据默认值(regex=False
),它将替换整个字符串-正如您预期的那样:您可以显式指定
regex=True
,这将替换子字符串:注意:Series.str.replace(pat, repl, n=-1, case=None, flags=0)没有}视为RegEx:
regex
参数-它总是将pat
和{您还可以使用
loc
来定位名称完全匹配的实例,然后设置为新名称。在相关问题 更多 >
编程相关推荐