Python 你们是如何制作熊猫组合滚球的

Python 你们是如何制作熊猫组合滚球的,python,pandas,Python,Pandas,我需要下面的组(1,2),然后是组(2,3),然后是组(3,4),等等。我能做的最好的是组(1,2),然后是组(3,4)。我取第1组,将值添加到第2组。然后下一次迭代是组(2,3)。我获取组2最新更新的值,并将它们添加到组3的原始值中。然后,我将第3组新更新的值添加到第4组的原始值中,得到: 最重要的是,不要拘泥于按正确的顺序添加值,真正最重要的是我想更新一个组,我想用组1的值更新组2(我的帖子只是一个例子),然后在下一次转换中,我想更新组2中更新的新组值来更新下一个组,也就是3。然后在下一次转

我需要下面的组(1,2),然后是组(2,3),然后是组(3,4),等等。我能做的最好的是组(1,2),然后是组(3,4)。我取第1组,将值添加到第2组。然后下一次迭代是组(2,3)。我获取组2最新更新的值,并将它们添加到组3的原始值中。然后,我将第3组新更新的值添加到第4组的原始值中,得到:

最重要的是,不要拘泥于按正确的顺序添加值,真正最重要的是我想更新一个组,我想用组1的值更新组2(我的帖子只是一个例子),然后在下一次转换中,我想更新组2中更新的新组值来更新下一个组,也就是3。然后在下一次转换或应用中,我需要这些新的组3值,以便更新组4。我希望这是有道理的

num group
1       1
2       1
2       1
4       1
5       2
6       2
7       2
8       2
9       3
10      3
11      3
12      3
13      4
14      4
15      4
16      4
我希望我的第一组是以下。第二组的值由第1组添加:

1       1
2       1
3       1
4       1
6       2
8       2
10      2
14      2
我的第二组希望是新的修改值,因为它将第一组添加到它们中。第3组的原始值将由第2组的新值添加:

6       2
8       2
10      2
14      2
15      3
18      3
21      3
26      3
我的第三组是第三组的新价值观。第四组是第三组按顺序添加的原始值:

15      3
18      3
21      3
26      3
29      4
33      4
36      4
42      4
我试过了

df.groupby(np.arrange(len(df))//4))
,除了它只按组(1,2)拆分外,下一个组是(3,4)。我需要(1,2),(2,3),(3,4)。这是由于我正在处理组1以生成组2的值。然后我使用组2创建组3的值。然后,我使用组3生成组4的值。在此方面的任何帮助都将不胜感激。我举了一个简单的例子,因为我不需要帮助我在小组中做什么,我只需要知道如何像那样分组

再一次,这只是一个例子,其中最重要的部分,不要停留在按正确的顺序添加值上,我不想测试任何人。实际上,最重要的是我想更新一个组,我想用组1的值更新组2(我的帖子只是一个例子),然后在下一次转换中,我想用组2中更新的新组值更新下一个组,即3。然后在下一次转换或应用中,我需要这些新的组3值,以便更新组4。我希望这有意义

我会的

num group
1       1
2       1
2       1
4       1
5       2
6       2
7       2
8       2
9       3
10      3
11      3
12      3
13      4
14      4
15      4
16      4
s=df.group.drop_duplicates()
l=[df.loc[df.group.isin([x,y])]for x , y in zip(s.iloc[1:],s.shift().iloc[1:])]
更新

df['num']=df['num'].groupby(df.groupby('group').cumcount()).cumsum()
s=df.group.drop_duplicates()
l=[df.loc[df.group.isin([x,y])]for x , y in zip(s.iloc[1:],s.shift().iloc[1:])]
l[0]
   num  group
0    1      1
1    2      1
2    2      1
3    4      1
4    6      2
5    8      2
6    9      2
7   12      2
先决条件:

df[“group_sub”]=df.groupby(“group”).cumcount()
dfprev=df[“num”]
对于范围内的i(1,df.group.nunique()):
dfprev+=df[“num”].groupby(df[“group_sub”]).shift(i).fillna(0)
df.drop(“组_子”,轴=1,原地=真)
你可以做:

df_series=[df.loc[df.group.isin(df.group.unique()[i:i+2]),用于范围内的i(df.group.nunique()-1)]

实际上我正在更新它,这是一个快速更新。我的问题需要更新一点,感谢那些回答的人,一个更好/更清晰的版本将很快上线。请编辑这一个。我很抱歉,我想让问题更清楚。我希望当您像这样分组并修改值时,它会保留在滚动组中。任何关于如何做到这一点的最佳实践都将不胜感激。我正在使用第一组更新第二组。然后用组2的新值更新组3的值。然后,使用组3的新值,我正在更新组4的新值。我希望有一种方法可以进行分组和转换,这样我就可以避免for循环或在没有太多代码的情况下拆分它,比如滚动累积和,只会每四个索引改变一次?就像我使用组1生成组2的值一样。我在第一组中用一个公式求解,这些答案进入第二组。然后我需要把这些新答案放在第二组,应用同样的公式,把答案放在第三组。然后我选择新的第3组,应用公式,将这些答案放在第4组。这对我来说是最重要的部分,然后才能得到正确的答案。我想做一些像df.groupby((1,2),(2,3),(3,4)transform(lambda x:把第1组做点什么,然后把第2组的新答案放在第2组,做同样的事情,然后把它们放在第3组,等等)happy new mate=)@datanoveler happy new year:-)我更新了我的答案,告诉我真正想完成的事情,你能再看一眼吗?我很感激你现在的表现answer@oppressionslayer检查更新,伙计:-)新年快乐我更新了我的答案,告诉我我真正想要完成的事情,你能再看一下吗,我感谢你目前的回答我增加了先决条件-如果方向正确,请告诉我。早上将探索更多,新年快乐;)我更新了一下我的答案,告诉你我真正想要实现的目标,你能再看一下吗,我很感激你现在的答案
df['grp'] = df.apply(lambda x : x.iloc[::4]).groupby('num').cumsum()
df['grp'] = df['grp'].ffill()
print(df)
    num  group  grp
0     1      1  1.0
1     2      1  1.0
2     3      1  1.0
3     4      1  1.0
4     5      2  2.0
5     6      2  2.0
6     7      2  2.0
7     8      2  2.0
8     9      3  3.0
9    10      3  3.0
10   11      3  3.0
11   12      3  3.0
12   13      4  4.0
13   14      4  4.0
14   15      4  4.0
15   16      4  4.0