Python 如何使用自定义值对一行进行编码?

Python 如何使用自定义值对一行进行编码?,python,pandas,dataframe,Python,Pandas,Dataframe,我想用pandas编码所选列的行值 例如,假设我有以下数据帧 Col_A Col_B 0 SV NT 1 NT P 2 SV I 3 P SV 4 I P 我有一个字典,其中包含一列中每一行的编码值,如下所示 encode_values = { "Col_A" : {"NT": 1, "SV": 0, "P": 1, &q

我想用pandas编码所选列的行值

例如,假设我有以下数据帧

    Col_A  Col_B
0    SV     NT
1    NT     P
2    SV     I
3    P      SV
4    I      P
我有一个字典,其中包含一列中每一行的编码值,如下所示

encode_values = { 
    "Col_A" : {"NT": 1, "SV": 0, "P": 1, "I": 0},
    "Col_B": {"NT": 10, "SV": 0, "P": 10, "I": 0}
}
我想要一个新的dataframe,其中每个列都有自定义编码

结果:-

    Col_A  Col_B
0    0     10
1    1     10
2    0     0
3    1     0
4    0     10

尝试用dictionary作为参数替换,分别应用于df中的每个系列:

df.Col_A = df.Col_A.replace (encode_values['Col_A'])
df.Col_B = df.Col_B.replace (encode_values['Col_B'])

尝试用dictionary作为参数替换,分别应用于df中的每个系列:

df.Col_A = df.Col_A.replace (encode_values['Col_A'])
df.Col_B = df.Col_B.replace (encode_values['Col_B'])

您可以使用列名
应用
映射

print (df.apply(lambda d: d.map(encode_values[d.name])))

   Col_A  Col_B
0      0     10
1      1     10
2      0      0
3      1      0
4      0     10

您可以使用列名
应用
映射

print (df.apply(lambda d: d.map(encode_values[d.name])))

   Col_A  Col_B
0      0     10
1      1     10
2      0      0
3      1      0
4      0     10