我有一个问题要分组,并在数据帧上执行一些操作。输入数据框是这样的:
我想基于unique_id进行分组,但是如果有两个观察,我需要在一个唯一ID中包含两行。 1个unique_ID中可以有任意数量的观察
预期输出:
我试图进行计数,并在其中添加了其他列以帮助groupby,但我没有为我工作。
df["Count_ob"] = df.groupby("Unique_ID")["IF_car_history"].sum()
已申请帮助。谢谢
答案 0 :(得分:1)
df = pd.DataFrame({'Unique_id':[1,1,2,2,3,3,3,3],
'Car_history':[0,1,0,1,0,1,0,1],
'Value':[1000,1500,1000,1200,800,700,1300,1700],
'Ob_id':[0,1,0,2,0,3,0,4]})
df["Count_ob"] = df.Ob_id[::-1].cumsum()[::-1] # <=== this do the trick!!!
df["Count_ob"] = df["Count_ob"].max() - df["Count_ob"]
df = df.groupby("Count_ob")[["Unique_id","Car_history","Value","Ob_id"]].agg({'Unique_id':'max',
'Car_history':'sum',
'Value':'sum',
'Ob_id':'sum'}).reset_index(drop=True)
df['Value'] = df.groupby('Unique_id')['Value'].cumsum().values