是否有庫函數(shù)可以進(jìn)行以下轉(zhuǎn)換: Enum Column Vals => NewCol ----------------------- => -------- True False False => Enum False True False => Column False False True => Vals我確信我可以編寫自己的函數(shù)來完美地完成此操作。感覺應(yīng)該已經(jīng)有一個庫函數(shù)能夠做到這一點(diǎn),但我在文檔中看不到。
3 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個贊
假設(shè)每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
做點(diǎn)積:
df['NewCol']?=?df.dot(df.columns)

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
這應(yīng)該有效:
df.join(df.stack().loc[df.stack()==True].reset_index()[['level_1']]).rename(columns={'level_1':'New_Col'})

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個贊
您可以融化然后查詢數(shù)據(jù)框:
df['NewCol'] = (
df.reset_index()
.melt(id_vars=['index'])
.query('value')
.set_index('index')
.drop(columns='value')
)
添加回答
舉報(bào)
0/150
提交
取消