Gab*_* F. 5 python categories dataframe pandas
如何使用factorize跨两列存在的值的熊猫?
具体来说,我试图将存在于两列中的值转换为数值,并将相应的分解值放入新列中,以便分解与两个输入列“A”和“B”一致。
现有数据帧:
A B
0 a b
1 c a
2 d a
3 e c
4 c b
5 b e
6 e f
Run Code Online (Sandbox Code Playgroud)
期望输出:
A B A_ID B_ID
0 a b 0 4
1 c a 1 0
2 d a 2 0
3 e c 3 1
4 c b 1 4
5 b e 4 3
6 e f 3 5
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法factorize成功地用于一列:
df['A_ID'] = pd.factorize(df.A)[0]
Run Code Online (Sandbox Code Playgroud)
我怎样才能通过跨两列的值的一致映射来实现这一点?我是否需要求助于使用自定义lambda函数,或者有没有办法用它来完成factorize?
pd.factorize, apply+ pd.Categorical:
_, b = pd.factorize(df.values.T.reshape(-1, ))
# or df.values.ravel('F'), as suggested by Zero
r = df.apply(lambda x: pd.Categorical(x, b).codes).add_suffix('_ID')
A_ID B_ID
0 0 4
1 1 0
2 2 0
3 3 1
4 1 4
5 4 3
6 3 5
pd.concat([df, r], 1)
A B A_ID B_ID
0 a b 0 4
1 c a 1 0
2 d a 2 0
3 e c 3 1
4 c b 1 4
5 b e 4 3
6 e f 3 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |