我得到了一个真值表,并希望使用它创建一个列表表。我看到了很多关于如何创建真值表的提示,但没有看到多少关于如何返回的提示。当然,我可以通过一些循环来实现这一点,但我认为可能有一种巧妙的方法来实现这一点,这将更加令人满意。考虑下面的数据框,详细描述一个人拥有的车辆:
+-------+------------+-----+----------+
| Name | motorcycle | car | unicycle |
+-------+------------+-----+----------+
| Sarah | 1 | 0 | 1 |
| Mike | 0 | 1 | |
| Doug | 1 | 1 | 0 |
+-------+------------+-----+----------+
我想把它改造成这样:
+-------+------------------------+
| Name | vehicle |
+-------+------------------------+
| Sarah | [motorcycle, unicycle] |
| Mike | [car] |
| Doug | [motorcycle, car] |
+-------+------------------------+
有没有一个巧妙的方法来实现这一点
IIUC,我们可以使用
melt
、loc
和groupby
和agg(list)
注意,这只在0.24+中有效看起来您试图反转pd.get_假人、熔化或透视表可能会出错
这里是熔化法
df.melt(id_vars='Name', var_name='vehicle').query('value == 1').groupby('Name').agg({'vehicle': list})
相关问题 更多 >
编程相关推荐