我想,如下圖所示更換位置「Lobur」與「LON」:替換熊貓數據庫中的某些值?
dcol = data["Location"]
data['Location'] = dcol.str.title().replace("Lobur", "LON")
爲什麼沒有這方面的工作,沒有人知道如何正確地做到這一點? (標題部分工作正常)
我想,如下圖所示更換位置「Lobur」與「LON」:替換熊貓數據庫中的某些值?
dcol = data["Location"]
data['Location'] = dcol.str.title().replace("Lobur", "LON")
爲什麼沒有這方面的工作,沒有人知道如何正確地做到這一點? (標題部分工作正常)
如果你想鏈中的字符串方法,你必須插入另一.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>
你也可以做到這一點在兩行,當然。
您可以使用適用於:
data['Location'] = data['Location'].apply(lambda x: str(x).title().replace('Lobur','LON')
它適用lambda函數每個值
如果你想使用更復雜的處理,你也可以在函數中定義它並將其傳遞函數爲參數申請(),這樣的:
def process(x):
x=str(x)
return x.title().replace('Lobur','LON')
data['Location'] = data['Location'].apply(process)
我會用下面的方法:
# 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"