目前我正在回傳每一行中最大值的列名。
df['Active'] = df.idxmax(axis=1)

如何考慮每列的優先級?例如,對于第 0 行,Active 列應該有 opC,因為它的優先級高于 opA。(Priority 行也不應該在 Active 列中回傳任何內容)。
uj5u.com熱心網友回復:
您需要在使用前重新排列列idxmax
temp_cols = df.columns
df = df.sort_index(axis=1,key=lambda x:df.loc['Priority',x],ascending=False)
df['Active'] = df.idxmax(axis=1)
df = df[list(temp_cols) ['Active']]
df.loc['Priority','Active'] = ''
uj5u.com熱心網友回復:
將列索引乘以行列值,然后選取最大結果并對所有行值求和,將其放入新列,排序列。
uj5u.com熱心網友回復:
您可以使用索引一次性完成所有操作。
使用@Meelad 建議的優先級乘法:
df['Active'] = (df
.loc[df.index!='Priority']
.mul(df.loc['Priority'])
.idxmax(1)
)
或者按照@Arnau 的建議對列進行排序:
df['Active'] = (df
.loc[df.index!='Priority']
.sort_index(axis=1, key=lambda x: -df.loc['Priority',x])
.idxmax(1)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453880.html
