我有一個包含超過 800 萬條記錄的資料框,產品促銷是您必須購買才能獲得獎勵,積累是您購買的東西。
| 姓名 | 產品 | 產品推廣 | 報酬 | 積累 |
|---|---|---|---|---|
| 瓊 | 產品1 | 3 | 1 | 3 |
| 卡桑德拉 | 產品2 | 2 | 1 | 1 |
為了涵蓋任何情況,我有一個代碼,如果滿足其他一些條件,我有一個這樣的代碼,但我花了太長時間,我沒有得到我想要的結果。
for acummulation, promotion,reward in zip(df["Accumulation"], df["Product Promotion"],df["Reward"]):
if acummulation==reward:
df['ProductToRetire']=Reward
elif acummulation>reward:
df['ProductToRetire']=math.trunc(acummulation/promotion)*Reward
else:
df['ProductToRetire']=0
所以我的問題是,有沒有更簡單的方法來解決這個問題?
uj5u.com熱心網友回復:
你可以試試np.select
df['ProductToRetire'] = np.select(
[df['Accumulation'].eq(df['Reward']),
df['Accumulation'].gt(df['Reward'])],
[Reward,
df['Accumulation'].div(df['Product Promotion']).apply(math.trunc).mul(Reward)],
default=0
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478497.html
下一篇:熊貓適用于大型資料框的分配
