python - 你如何在 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。我希望这是有道理的
解决方案
我会做
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
推荐阅读
- delete-row - 无法撤消或重做将行添加到 NSOutlineView 的操作
- ios - 如何检查字符串是否包含字符串数组中的所有值?
- javascript - 为什么函数语法在 setTimeout() 中不能用作箭头语法?
- in-app-subscription - 应用内购买代码中的验证问题
- java - 如何在 Mac 的强制退出应用程序窗口上显示我的 Java Swing 程序图标?
- python - VSCODE 上的 Flake8 未突出显示错误
- ubuntu - 如何安装cdc_acm版本驱动ubuntu
- android - 如何在多个设备上验证消耗品购买
- sql - 获取每个记录上嵌套包含过滤器匹配的所有记录
- node.js - 如果脚本退出 nodejs 之后返回几个错误,我想创建一个 unhandledRejection