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

浮云间
TA贡献1829条经验 获得超4个赞
假设每True
行总是有 1 个,您可以使用DataFrame.idxmax
over 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)

RISEBY
TA贡献1856条经验 获得超5个赞
这应该有效:
df.join(df.stack().loc[df.stack()==True].reset_index()[['level_1']]).rename(columns={'level_1':'New_Col'})

慕田峪9158850
TA贡献1794条经验 获得超7个赞
您可以融化然后查询数据框:
df['NewCol'] = (
df.reset_index()
.melt(id_vars=['index'])
.query('value')
.set_index('index')
.drop(columns='value')
)
添加回答
举报
0/150
提交
取消