Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改数据帧的列值_Python_Pandas - Fatal编程技术网

Python 更改数据帧的列值

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

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