我正在尝试编写一个for循环,在其中可以为每个唯一ID子集一个数据帧并创建一个新列。在我的示例中,我想基于ID,余额和初始金额创建一个新余额。我的想法是循环遍历每组ID,获取该子集,然后再添加一些if / if else语句。在迭代中,我希望循环查看所有唯一的ID,例如,当我循环通过df [“ ID”] == 2时,应该有7行,因为它们的余额都相互关联。这就是我的数据框的样子:
df = pd.DataFrame(
{"ID" : [2,2,2,2,2,2,2,3,4,4,4],
"Initial amount":
[3250,10800,6750,12060,8040,4810,12200,13000,10700,12000,27000],
"Balance": [0,0,0,0,0,0,0,2617,19250,19250,19250], "expected output":
[0,0,0,0,0,0,0,2617,10720,8530,0]})
我当前的代码看起来像这样,但是我感觉自己朝着错误的方向前进。谢谢!
unique_ids = list(df["ID"].unique())
new_output = []
for i in range(len(unique_ids)):
this_id = unique_ids[i]
subset = df.loc[df["ID"] == this_id,:]
for j in range(len(subset)):
this_bal = subset["Balance"]
this_amt = subset["Initial amount"]
if j == 0:
this_output = np.where(this_bal >= this_amt, this_amt, this_bal)
new_output.append(this_output)
elif this_bal - sum(this_output) >= this_amt:
this_output = this_amt
new_output.append(this_output)
else:
this_output = this_bal - sum(this_output)
new_output.append(this_output)
任何建议将不胜感激!