Python 如何在大熊猫中进行分组和分组

Python 如何在大熊猫中进行分组和分组,python,pandas,Python,Pandas,df: 我想根据Id和main_Id上的条件按数据帧分组。现在Id的最大值即4和main_Id即5之间的差值为1。然后我只需要按我的df分组一次,并在df中附加记录,如果是2,我需要按两次分组,以此类推。。。 我试过: 我希望这个东西是动态的,我已经硬编码到diff==2。Diff可以是任意数量的。有没有更好的方法做这件事。你可以做以下几件事。创建一个字典并保存将通过分组创建的所有数据帧,以及它们各自的名称。这样可以简化数据帧的命名和代码的一般结构: max_id_df =int(df.Id.a

df:

我想根据Id和main_Id上的条件按数据帧分组。现在Id的最大值即4和main_Id即5之间的差值为1。然后我只需要按我的df分组一次,并在df中附加记录,如果是2,我需要按两次分组,以此类推。。。 我试过:


我希望这个东西是动态的,我已经硬编码到diff==2。Diff可以是任意数量的。有没有更好的方法做这件事。

你可以做以下几件事。创建一个字典并保存将通过分组创建的所有数据帧,以及它们各自的名称。这样可以简化数据帧的命名和代码的一般结构:

max_id_df =int(df.Id.astype(int).max())
diff = main_Id - max_id_df
if diff==1:
   df2= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df2, ignore_index = True) 
elif diff==2:
    df2= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df2, ignore_index = True)--- 1st groupby
    df3= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df3, ignore_index = True)--- 2ndst groupby
max_id_df =int(df.Id.astype(int).max())
diff = main_Id - max_id_df
if diff==1:
   df2= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df2, ignore_index = True) 
elif diff==2:
    df2= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df2, ignore_index = True)--- 1st groupby
    df3= df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(df3, ignore_index = True)--- 2ndst groupby
dfs={}
k=2
for _ in range(diff):
    dfs['df'+str(k)]=df.groupby(items).['Sales','Qty'].sum().reset_index()
    df.append(dfs['df'+str(k)], ignore_index = True) 
    k+=1