在 pandas 中重新编码分类变量,每列都有不同的映射

问题描述 投票:0回答:1

我有一个分类数据的数据框,我想重新编码。 每列都有其单独的重新编码值字典。

下面是我迄今为止所拥有的代码的玩具示例:

import pandas as pd

ser = pd.DataFrame({'a':[1,3,3,1], 'b':[2,2,4,5]})
print(ser)

a_dict = {1:11, 3:33}
b_dict = {2:22, 4:44, 5:55}
ser.a = ser.a.map(a_dict)
ser.b = ser.b.map(b_dict)
print(ser)

(当然,我的真实数据远不止 2 列。)是否有更简洁的方法来映射(应用)整个数据框?

python pandas categorical-data
1个回答
7
投票

replace
可以采用分层字典,其中第一层的键是列的名称,值是用于在相应列中进行替换的字典。

ser.replace(dict(a=a_dict, b=b_dict))

    a   b
0  11  22
1  33  22
2  33  44
3  11  55
© www.soinside.com 2019 - 2024. All rights reserved.