Python 更改数据帧的列值
我有这样的python dict:Python 更改数据帧的列值,python,pandas,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'}} 我有这样的数据框 A B 20 0.123 21 2.123 22 4.4
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,它从列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]不在[索引]中
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
请改为尝试映射:
df['C'] = df['A'].map(keysdict['date'])
如果列“A”是索引:
df['C'] = df.map(keysdict['date'])
您可以直接使用地图而无需应用
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