在for循环和操作后

时间:2019-01-22 23:17:29

标签: python python-3.x pandas dataframe

我正在尝试编写一个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)

任何建议将不胜感激!

0 个答案:

没有答案