如何在熊猫中获得滚动组我需要以下组(1,2),然后是组(2,3),然后是组(3,4),依此类推。我能做的最好的事情是组(1,2),然后分组(3,4)。我将组1添加到组2中。然后下一个迭代是组(2,3)。我采用第2组的新更新值,并将它们添加到第3组的原始值。然后,我将那些第3组的新更新的值添加到第4组的原始值中,这样我们得到:

其中最重要的部分是,不要卡在以正确的顺序添加值上,最重要的是,我想更新组,我要使用组1的值来更新组2(我的帖子是只是一个示例),然后在下一个转换中,我希望我在group2中更新的那些新组值来更新下一个组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


df=pd.read_clipboard()


我希望我的第一个小组如下。第二组已将其值添加到第一组:

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


我的第三个组是第3组的新值。第4组将是第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。我希望这是有道理的

最佳答案

我会做

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

关于python - 您如何在 Pandas 中建立组合的滚动小组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59549155/

10-09 12:30