是否有庫函數可以進行以下轉換: 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
提交
取消