2013-11-21 93 views
2

我想,如下圖所示更換位置「Lobur」與「LON」:替換熊貓數據庫中的某些值?

dcol = data["Location"] 
data['Location'] = dcol.str.title().replace("Lobur", "LON") 

爲什麼沒有這方面的工作,沒有人知道如何正確地做到這一點? (標題部分工作正常)

回答

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> 

你也可以做到這一點在兩行,當然。

0

您可以使用適用於:

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