簡體   English   中英

如何根據另一個數據框的值返回列中的值

[英]How to return a value in a column based on another's dataframe's values

我正在嘗試根據另一個數據框計算 dataframe 中的列。 它用於計算人力資源工資單的資歷獎金。

這兩個數據框是:

df1 = 人數

peopleID    peopleSeniority
1               2
2               6
3               12
4               30

df2 = seniority_bonus

seniority    seniorityBonus
5            500
10           1000
15           2000 
20           3000

我想寫一個腳本,根據 df1 人的資歷返回 df2 資歷獎金。 會做的事情:如果 df1['people seniority'] > df2['seniority'] >, df2['senioritybonus'] 如果 df1 年資 > 5, 500 如果 df1 年資 > 10, 2000...

我試過使用查詢但它不起作用,我不知道如何編寫一個能夠進行計算的循環。

有人會有想法嗎?

如果獎金總是每五年增加一次,那就更容易了。 向 df1 添加一列,然后在該列上與 df2 合並

df1['seniority'] = (df1.peopleSeniority // 5) *5
df1 = df1.merge(df2, on='seniority')

文檔和此問答中閱讀有關合並的更多信息

編輯

如果括號之間的年份增量不是偶數,也不是線性的,也不是任何其他代數 function,那么您可以使用pd.cut()對每個人的資歷進行分類。

df1['seniority_bonus'] = pd.cut(df.peopleSeniority,
    bins=[0, 5, 8, 11, 15, 21, 30], right=False, labels=[0, 500, 1000, 1500, 2000, 2500])

請注意標簽是如何比箱子少一件物品的。 這是因為對於 7 integer 列表,您只能構建 6 個類別(不會有 30-infinite 的類別)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM