首页 > 解决方案 > 你如何在 Pandas 中创建组合滚动组

问题描述

你如何在 Pandas 中获得滚动组我需要以下组 (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()

我希望我的第一组如下。第 2 组的值由第 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

我的第三组是第三组的新价值观。第 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(我的帖子只是一个例子),然后在下一次转换中,我想要在 group2 中更新的那些新组值更新下一组,即 3。然后在下一次转换或应用中,我想要那些新的组 3 值,以便我可以更新组 4。我希望这是有道理的

标签: pythonpandas

解决方案


我会做

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

推荐阅读