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)