
大家好,我有一個簡單的 df,如上所示。目標列包含使用來自其他表的 lambda 創建的列名
targetmain['Target']=targetmain.apply(lambda row: row[row == 1].index.tolist() , axis=1)
我想要做的是基于名為“Primary”的目標列創建一個新列,檢查目標是什么以及與相應列匹配的數字。(例如,對于 Joe,“Primary”列應該是 5,jack 2,avarel 0,william 8)
如果括號是一個問題,我也可以洗掉它們。
uj5u.com熱心網友回復:
首先通過查找第一個值來洗掉串列,然后使用查找:
targetmain['Target'] = targetmain['Target'].str[0]
idx, cols = pd.factorize(targetmain['Target'])
df['Primary'] = targetmain.reindex(cols, axis=1).to_numpy()[np.arange(len(targetmain)), idx]
對于舊熊貓版本,請使用DataFrame.lookup:
targetmain['Target'] = targetmain['Target'].str[0]
targetmain['Primary'] = targetmain.lookup(targetmain.index, targetmain['Target'])
uj5u.com熱心網友回復:
考慮到列中的值Target是字串:
def primaryCount(row):
row['Primary'] = row[row['Target']]
return row
targetmain = targetmain.apply(primaryCount, axis=1)
您可能需要Target預先使用 @jezrael 建議的值:
targetmain['Target'] = targetmain['Target'].str[0]
編輯:這個解決方案可以簡化:
df['Primary'] = df.apply(lambda row: row[row['Target']], axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454557.html
