Python 从真值表中提取数据

Python 从真值表中提取数据,python,pandas,truthtable,Python,Pandas,Truthtable,我得到了一个真值表,并希望使用它创建一个列表表。我看到了很多关于如何创建真值表的提示,但没有看到多少关于如何返回的提示。当然,我可以通过一些循环来实现这一点,但我认为可能有一种巧妙的方法来实现这一点,这将更加令人满意。考虑下面的数据框,详细描述一个人拥有的车辆: +-------+------------+-----+----------+ | Name | motorcycle | car | unicycle | +-------+------------+-----+----------

我得到了一个真值表,并希望使用它创建一个列表表。我看到了很多关于如何创建真值表的提示,但没有看到多少关于如何返回的提示。当然,我可以通过一些循环来实现这一点,但我认为可能有一种巧妙的方法来实现这一点,这将更加令人满意。考虑下面的数据框,详细描述一个人拥有的车辆:

+-------+------------+-----+----------+
| 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以及AGCLIST注意到这只在熊猫0.24+中有效

s = df.melt(id_vars='Name',var_name='vehicle')
new_df = s.loc[s['value'] == 1].groupby('Name')['vehicle'].agg(list).to_frame()
IIUC,我们可以使用melt、loc和groupby以及agglist注释,这仅适用于0.24+的熊猫

s = df.melt(id_vars='Name',var_name='vehicle')
new_df = s.loc[s['value'] == 1].groupby('Name')['vehicle'].agg(list).to_frame()

看起来您试图反转pd.get_假人、熔化或透视表可能会出错

这里是熔化法

df.meltid_vars='Name',var_Name='vehicle'.query'value==1'.groupby'Name'.agg{'vehicle':list}


看起来您试图反转pd.get_假人、熔化或透视表可能会出错

这里是熔化法

df.meltid_vars='Name',var_Name='vehicle'.query'value==1'.groupby'Name'.agg{'vehicle':list}


你能提供一些代码来构建你的数据框架吗?你能提供一些代码来构建你的数据框架吗?
                      vehicle
Name                         
Doug        [motorcycle, car]
Mike                    [car]
Sarah  [motorcycle, unicycle]