基于 pandas 中的其他列创建带有循环的多列
creating multiple columns with a loop based on other column in pandas
大家好,我在 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)
您可以为此使用 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)
您可以使用 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
P.S.: 我在问题编辑后编辑了我的答案。
大家好,我在 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)
您可以为此使用 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)
您可以使用 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
P.S.: 我在问题编辑后编辑了我的答案。