大家好,我在 python 中有一個作業代碼,但它是以粗略的方式撰寫的,因為我仍在學習基礎知識并需要一些洞察力。
我正在基于一列創建 40 列,如下所示:
df["Bonus Payout 80%"]=0
df["Bonus Payout 81%"]=df["Monthly gross salary 100% (LC)"]*0.01
df["Bonus Payout 82%"]=df["Monthly gross salary 100% (LC)"]*0.02
df["Bonus Payout 83%"]=df["Monthly gross salary 100% (LC)"]*0.03
df["Bonus Payout 84%"]=df["Monthly gross salary 100% (LC)"]*0.04
df["Bonus Payout 85%"]=df["Monthly gross salary 100% (LC)"]*0.05
df["Bonus Payout 80%"]=df['Bonus Payout 80%'].apply('{:,.2f}'.format)
df["Bonus Payout 81%"]=df['Bonus Payout 81%'].apply('{:,.2f}'.format)
df["Bonus Payout 82%"]=df["Bonus Payout 82%"].apply('{:,.2f}'.format)
df["Bonus Payout 83%"]=df["Bonus Payout 83%"].apply('{:,.2f}'.format)
df["Bonus Payout 84%"]=df["Bonus Payout 84%"].apply('{:,.2f}'.format)
df["Bonus Payout 85%"]=df["Bonus Payout 85%"].apply('{:,.2f}'.format)
代碼行一直持續到獎金支付 120% 我怎樣才能整理它并將其轉換為更編碼的方式?
任何幫助表示贊賞
編輯:我的第一行代碼是:
df["Bonus Payout 80%"]=df["Monthly gross salary 100% (LC)"]*0.00
df["Bonus Payout 80%"]=df['Bonus Payout 80%'].apply('{:,.2f}'.format)
和最后一個
df["Bonus Payout 120%"]=df["Monthly gross salary 100% (LC)"]*0.40
df["Bonus Payout 120%"]=df['Bonus Payout 120%'].apply('{:,.2f}'.format)
uj5u.com熱心網友回復:
您可以使用f-strings和for loops:
j = 0
for i in range(80,121):
df[f"Bonus Payout {i}%"]=df["Monthly gross salary 100% (LC)"]*j
df[f"Bonus Payout {i}%"]=df[f'Bonus Payout {i}%'].apply('{:,.2f}'.format)
j = 0.01
PS:我在問題編輯后編輯了我的答案。
uj5u.com熱心網友回復:
您在這里不需要回圈,例如:
df = pd.DataFrame(range(10), columns=['my_col'])
coefs = np.array([0.1, 0.3, 0.5])
df.loc[:, ['my_col'] * len(coefs)].mul(coefs)\
.set_axis([f'Bonus Payout {int(coef*100)} %' for coef in coefs],
axis=1)
Bonus Payout 10% Bonus Payout 30% Bonus Payout 50%
0 0.0 0.0 0.0
1 0.1 0.3 0.5
2 0.2 0.6 1.0
3 0.3 0.9 1.5
4 0.4 1.2 2.0
5 0.5 1.5 2.5
6 0.6 1.8 3.0
7 0.7 2.1 3.5
8 0.8 2.4 4.0
9 0.9 2.7 4.5
uj5u.com熱心網友回復:
您可以結合使用 for 回圈np.arange
for i in np.arange(0,0.4,0.01):
df["Bonus Payout" str(int(80 i*100)) "%"]=df["Monthly gross salary 100% (LC)"]*i
df["Bonus Payout" str(int(80 i*100)) "%"]=df["Bonus Payout" str(int(80 i*100)) "%"].apply('{:,.2f}'.format)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/452297.html
