我正在嘗試使用 lambda 函式根據作業型別計算一些工資率。
這是我的代碼的一部分:
Payrate = {
'NH': 14.00,
'W1': 14.00,
'W2': 14.00,
'W3': 14.00,
'M': 14.00,
'NHLC': 14.00,
'E': 14.00,
}
df = df.fillna(0)
df['Total shift hours'] = df['Total shift hours'].astype(int)
df['Hours'] = df['Job'].apply(lambda x: x[Payrate] if x[Payrate]*(x['Total shift hours'])/12.33 else df['Total shift hours'].sum()).round(2)
Job是資料框中的一列,向我們顯示了作業型別。所以我想說的是,如果作業型別與 中的作業匹配Payrate,則乘以Total shift hours分配的值 14,然后除以 12.33。否則,如果是Payrate字典中未提及的另一種作業型別,則取Total shift hours.
謝謝你的幫助。
uj5u.com熱心網友回復:
這是沒有回圈的解決方案,apply通過映射Series.map將缺失的不匹配值替換為sum:
df['Hours'] = ((df['Job'].map(Payrate) * df['Total shift hours'] / 12.33 )
.fillna(df['Total shift hours'].sum()).round(2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366368.html
上一篇:快速洗掉熊貓資料框中的零列
