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

是否有库函数可以进行以下转换:


      Enum    Column  Vals     =>       NewCol

     -----------------------   =>      --------

      True    False   False    =>        Enum

      False   True    False    =>       Column

      False   False   True     =>        Vals

我确信我可以编写自己的函数来完美地完成此操作。感觉应该已经有一个库函数能够做到这一点,但我在文档中看不到。


达令说
浏览 117回答 3
3回答

浮云间

假设每True行总是有 1 个,您可以使用DataFrame.idxmaxover columns:df['NewCol'] = df.idxmax('columns')[出去]    Enum  Column   Vals  NewCol0   True   False  False    Enum1  False    True  False  Column2  False   False   True    Vals或者,您可以使用DataFrame.dot做点积:df['NewCol'] = df.dot(df.columns)

RISEBY

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

慕田峪9158850

您可以融化然后查询数据框:df['NewCol'] = (    df.reset_index()      .melt(id_vars=['index'])      .query('value')      .set_index('index')      .drop(columns='value'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python