2016-11-26 23 views
0

現在假設我有一個dataframe,其中有兩列:州和城市。將美國州名分別映射到字典中的兩個字母首字母縮略詞

然後我有一個單獨的dict與每個國家的兩個字母的首字母縮寫。現在我想添加第三列,用兩個字母縮寫詞來映射州名。我應該在Python/Pandas中做什麼?例如樣品的問題如下:

import pandas as pd 
a = pd.Series({'State': 'Ohio', 'City':'Cleveland'}) 
b = pd.Series({'State':'Illinois', 'City':'Chicago'}) 
c = pd.Series({'State':'Illinois', 'City':'Naperville'}) 
d = pd.Series({'State': 'Ohio', 'City':'Columbus'}) 
e = pd.Series({'State': 'Texas', 'City': 'Houston'}) 
f = pd.Series({'State': 'California', 'City': 'Los Angeles'}) 
g = pd.Series({'State': 'California', 'City': 'San Diego'}) 
state_city = pd.DataFrame([a,b,c,d,e,f,g]) 
state_2 = {'OH': 'Ohio','IL': 'Illinois','CA': 'California','TX': 'Texas'} 

現在我使用的state_2字典中柱狀態圖在dfstate_city。映射的dfstate_city應該包含三列:state,citystate_2letter

我原來的數據集有多個列,幾乎所有的美國主要城市。

因此,手動操作效率會降低。有沒有簡單的方法來做到這一點?

回答

6

其一,它可能更容易像state name: abbreviation的鍵值對存儲在你的字典裏,像這樣的:

state_2 = {'Ohio': 'OH', 'Illinois': 'IL', 'California': 'CA', 'Texas': 'TX'} 

您可以輕鬆地做到這一點:

state_2 = {state: abbrev for abbrev, state in state_2.items()} 

使用pandas.DataFrame.map

>>> state_city['abbrev'] = state_city['State'].map(state_2) 
>>> state_city 
      City  State abbrev 
0 Cleveland  Ohio  OH 
1  Chicago Illinois  IL 
2 Naperville Illinois  IL 
3  Columbus  Ohio  OH 
4  Houston  Texas  TX 
5 Los Angeles California  CA 
6 San Diego California  CA 
+0

非常感謝!它解決了我的問題! –

相關問題