我有这样的python dict:
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'}}
我有像这样的pandas数据框
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
中的dict键获取相应的值。喜欢下面的一个
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:'标签[A]不在[index]
中
答案 0 :(得分:3)
尝试使用地图:
df['C'] = df['A'].map(keysdict['date'])
如果列' A'是一个索引:
df['C'] = df.map(keysdict['date'])
答案 1 :(得分: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
答案 2 :(得分: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