我正在尝试将“Lobur”替换为“LON”,如下所示:
dcol = data["Location"]
data['Location'] = dcol.str.title().replace("Lobur", "LON")
为什么这不起作用,有谁知道如何正确地做到这一点? (标题部分工作正常)
答案 0 :(得分:3)
如果要链接字符串方法,则必须插入另一个.str
:
>>> d = pd.Series(["aaa","bbb","ccc","ddd"])
>>> d
0 aaa
1 bbb
2 ccc
3 ddd
dtype: object
>>> d.str.title()
0 Aaa
1 Bbb
2 Ccc
3 Ddd
dtype: object
>>> d.str.title().str.replace("Cc","RRR")
0 Aaa
1 Bbb
2 RRRc
3 Ddd
dtype: object
这是因为d.str.title()
返回Series
,但字符串方法位于通过StringMethods
获得的.str
对象内:
>>> d.str
<pandas.core.strings.StringMethods object at 0x93918ec>
当然,你也可以用两行来完成。
答案 1 :(得分:0)
你可以使用apply:
data['Location'] = data['Location'].apply(lambda x: str(x).title().replace('Lobur','LON')
将lambda函数应用于每个值
如果你想使用更复杂的处理,你也可以在函数中定义它并将该函数作为参数传递给apply(),如下所示:
def process(x):
x=str(x)
return x.title().replace('Lobur','LON')
data['Location'] = data['Location'].apply(process)
答案 2 :(得分:0)
我会使用以下方法:
# First get the indexes interesting to you
lobur_indexes = data.index[data['Location'].values == "Lobur"]
# then use them to modify your df
data['Location'].ix[lobur_indexes] = "LON"