Pandas将桌子旋转到一个

2024-05-19 10:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把熊猫df转换成一个热熊猫df。 最好的描述方法是举个例子:

我的测向图是这样的:

ID|DEV |STATE|
1 |DEV1|on
2 |DEV2|on
3 |DEV1|off
3 |DEV3|on
3 |DEV3|off

我知道不唯一的身份证是不好的,我正在努力。在

然后我旋转桌子:

^{pr2}$

结果如下

^{3}$

我现在想要这样的东西:

ID|DEV1.on|DEV1.off|DEV2.on|DEV3.on|DEV3.off
1 |     1 |       0|      0|      0|       0
2 |     0 |       0|      1|      0|       0
3 |     0 |       1|      0|      1|       0
4 |     0 |       0|      0|      0|       1

我知道如何连接列名,但不知道如何获得“一个热门”样式。也许用aggfunc是可能的?在

你能帮我吗?在

费边


Tags: 方法deviddfdev1ondev2dev3
2条回答

另一个选择:

df['new_col'] = df['DEV'] + '.' + df['STATE']
df1 = pd.get_dummies(df['new_col'])
df = pd.concat([df, df1], axis=1).drop(['DEV', 'STATE','new_col'], axis=1)
df = df.groupby("ID").sum().replace(0, np.nan)

输出:

^{pr2}$

^{}与带分隔符.的连接列一起使用,按ID列按^{}索引,最后一次按索引max

df['join'] = df['DEV'] + '.' + df['STATE']
df = pd.get_dummies(df.set_index('ID')['join']).max(level=0)
print (df)
    DEV1.off  DEV1.on  DEV2.on  DEV3.off  DEV3.on
ID                                               
1          0        1        0         0        0
2          0        0        1         0        0
3          1        0        0         1        1

另一个使用MultiIndex并通过^{}重塑形状的解决方案,但必须^{}^{}和最后一个展平MultiIndex

^{pr2}$

相关问题 更多 >

    热门问题