为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas - 是否有一种“开箱即用”的方式来组合表示枚举数据的布尔列?

Pandas - 是否有一种“开箱即用”的方式来组合表示枚举数据的布尔列?

达令说 2023-12-26 16:05:26
是否有库函数可以进行以下转换:      Enum    Column  Vals     =>       NewCol     -----------------------   =>      --------      True    False   False    =>        Enum      False   True    False    =>       Column      False   False   True     =>        Vals我确信我可以编写自己的函数来完美地完成此操作。感觉应该已经有一个库函数能够做到这一点,但我在文档中看不到。
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

假设每True行总是有 1 个,您可以使用DataFrame.idxmaxover columns

df['NewCol'] = df.idxmax('columns')

[出去]

    Enum  Column   Vals  NewCol

0   True   False  False    Enum

1  False    True  False  Column

2  False   False   True    Vals

或者,您可以使用DataFrame.dot做点积:

df['NewCol'] = df.dot(df.columns)


查看完整回答
反对 回复 2023-12-26
?
RISEBY

TA贡献1856条经验 获得超5个赞

这应该有效:

df.join(df.stack().loc[df.stack()==True].reset_index()[['level_1']]).rename(columns={'level_1':'New_Col'})



查看完整回答
反对 回复 2023-12-26
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您可以融化然后查询数据框:


df['NewCol'] = (

    df.reset_index()

      .melt(id_vars=['index'])

      .query('value')

      .set_index('index')

      .drop(columns='value')

)


查看完整回答
反对 回复 2023-12-26
  • 3 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信