我有一个数据框,我需要在其中替换列sense
中字符串正好为pertain
的所有字符串。我可以应用以下代码来执行相同的操作
pd[pd['sense'] == 'pertain']['sense'].str.replace('pertain','pertaining')
但这不会对原始数据帧生效。如何确保效果取决于原始数据集,并且列中的所有pertain
都将更改为pertaining
| affix | word | sense | meaning |
0 ical neuroanatomical pertaining of or pertaining to [[neuroanatomy]]
1 ical neuroanatomical pertain of or pertaining to [[neuroanatomy]]
2 ical biotechnological pertaining of or pertaining to [[biotechnology]]
3 ical biotechnological pertain of or pertaining to [[biotechnology]]
4 ical educological relating relating to [[educology]].
所以理想情况下,在操作之后我的输出应该如下所示
| affix | word | sense | meaning |
0 ical neuroanatomical pertaining of or pertaining to [[neuroanatomy]]
1 ical neuroanatomical pertaining of or pertaining to [[neuroanatomy]]
2 ical biotechnological pertaining of or pertaining to [[biotechnology]]
3 ical biotechnological pertaining of or pertaining to [[biotechnology]]
4 ical educological relating relating to [[educology]].
答案 0 :(得分:2)
您可以在分配中使用loc
,在其中传递逻辑向量以指示应替换列sense
的值的行(假设您的数据框名为df
) :
df.loc[df.sense == "pertain", "sense"] = "pertaining"
df
# affix word sense meaning
#0 ical neuroanatomical pertaining of or pertaining to [[neuroanatomy]]
#1 ical neuroanatomical pertaining of or pertaining to [[neuroanatomy]]
#2 ical biotechnological pertaining of or pertaining to [[biotechnology]]
#3 ical biotechnological pertaining of or pertaining to [[biotechnology]]
#4 ical educological relating relating to [[educology]].
另一种方法是仅在replace
列上使用sense
,然后将其分配回原始数据框,将sense
列替换为修改后的版本:
df['sense'] = df.sense.replace("pertain", "pertaining")
总而言之,您的方法也有效,您只需将其分配回原始数据框作为上面的第二个选项。