如何替换与条件匹配的选定行上的列中的字符串

时间:2017-01-15 03:43:31

标签: python pandas

我有一个数据框,我需要在其中替换列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]].

1 个答案:

答案 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")

总而言之,您的方法也有效,您只需将其分配回原始数据框作为上面的第二个选项。