pandas数据框更改列值

时间:2017-06-08 18:02:05

标签: python pandas

我有这样的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]

3 个答案:

答案 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