2017-06-08 115 views
0

我有蟒蛇字典是這樣的:大熊貓數據框中更改列值

keysdict={'date': {20: '201012', 21: '201101', 22: '201102', 23: '201103', 24: '201104', 25: '201105', 26: '201106', 27: '201107', 28: '201108', 29: '201109', 30: '201110', 31: '201111'}} 

而且我有熊貓據幀這樣

A B 
20 0.123 
21 2.123 
22 4.45 
23 3.2 
24 3.1 
25 3.9 
26 4.2 

現在我想添加一個額外的列C這需要相應的值來自Column A的字典鍵。像下面一個

A B  C 
20 0.123 201012 
21 2.123 201101 
22 4.45 201102 
23 3.2 201103 
24 3.1 201104 
25 3.9 201105 
26 4.2 201106 

我想這

df.loc[:,'C']=keysdict['date'][df.loc['A']] 

但是,得到下面的錯誤

KeyError: 'the label [A] is not in the [index]

回答

1

df.loc['A']指的是標有 'A' 的,你需要,這是作爲df['A']訪問。下面是正確的代碼:

df = pd.DataFrame({'A':[20,21,22,23], 'B':[0.123,2.123,4.45,3.2]}) 
# A  B 
#0 20 0.123 
#1 21 2.123 
#2 22 4.450 
#3 23 3.200 

樣品密鑰詞典:

keysdict = {'date' : {20:0,21:1,22:2,23:3}} 

df['C'] = df['A'].apply(lambda x: keysdict['date'][x]) 
# A  B C 
#0 20 0.123 0 
#1 21 2.123 1 
#2 22 4.450 2 
#3 23 3.200 3 
+0

仍然收到錯誤'KeyError:'A'' – curiousguy

+0

我在答案中包含了一個工作示例。 – DyZ

3

嘗試的地圖,而不是:

df['C'] = df['A'].map(keysdict['date']) 

如果列 'A' 是一個索引:

df['C'] = df.map(keysdict['date']) 
3

您可以直接使用地圖而不用申請

df['C'] = df['A'].map(keysdict['date']) 

    A B  C 
0 20 0.123 201012 
1 21 2.123 201101 
2 22 4.450 201102 
3 23 3.200 201103 
4 24 3.100 201104 
5 25 3.900 201105 
6 26 4.200 201106