Python 带熊猫的反向二进制编码

Python 带熊猫的反向二进制编码,python,pandas,Python,Pandas,我有一个熊猫数据帧,希望反转三列的二进制编码(即get_dummies())。编码从左到右: a b c 0 0 1 1 1 0 0 1 2 1 1 1 3 1 0 0 将产生一个新的类别列C获取值0-7: C 1 6 2 4 3 7 4 1 我不知道为什么这一行在轴=1附近给了我一个语法错误: df['C'] = df.apply(lambda x: (x['a']==1 ? 1:0)+(x

我有一个熊猫数据帧,希望反转三列的二进制编码(即
get_dummies()
)。编码从左到右:

    a   b   c
0   0   1   1
1   0   0   1
2   1   1   1
3   1   0   0
将产生一个新的类别列
C
获取值
0-7

    C
1   6   
2   4   
3   7
4   1
我不知道为什么这一行在轴=1附近给了我一个语法错误:

df['C'] = df.apply(lambda x: (x['a']==1 ? 1:0)+(x['b']==1 ? 2:0)+(x['c']==1 ? 4:0), axis=1)

如果性能很重要,请使用numpy-首先将数据帧转换为numpy阵列,然后使用:

a=df.values
#熊猫0.24+
#a=df.to_numpy()

df['C']=a.dot(1您所做的是正确的。(只需要在语法上做一些修改)

我修改了你的密码

>>> df['C'] = df.apply(lambda x: (1 if x['a']==1 else 0)+(2 if x['b']==1 else 0)+(4 if x['c']==1 else 0), axis=1)
>>> df['C'] = df.apply(lambda x: (1 if x['a']==1 else 0)+(2 if x['b']==1 else 0)+(4 if x['c']==1 else 0), axis=1)