python - pandas groupby 一连串数字
问题描述
我有一个这样的数据框:
df = pd.DataFrame({'dir':[0,0,0,1,1,0,1], 'price': [100, 102, 110, 120, 125, 200, 210]})
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
5 0 200
6 1 210
我想将 0 和之后的 1 分组。我想要的结果如下所示:
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
dir price
5 0 200
6 1 210
解决方案
diff
与cumsum
if it is一起使用1
,0
您将开始计数为一个新组,因此diff
应该等于(eq
)-1
for x , y in df.groupby(df.dir.diff().eq(-1).cumsum()):
print(y)
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
dir price
5 0 200
6 1 210
d={x: y for x , y in df.groupby(df.dir.diff().eq(-1).cumsum())}
推荐阅读
- android - 与 ViewPager 一起使用时,如何在 Exoplayer 中播放或暂停视频?
- .net - 在 PowerShell 中加载 WinSCP - 无法加载文件或程序集 - 此程序集由比当前加载的运行时更新的运行时构建
- javascript - 如何在 React 中使用 hooks 实现 componentDidMount 以符合 EsLint 规则“react-hooks/exhaustive-deps”:“warn”?
- python - Windows和Python3.7.4下RDKit安装
- ruby-on-rails - Ruby on Rails 测试 - ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR: malformed array literal:
- python - 如何将 Python 中的加权边缘列表转换为一般边缘列表?
- prestashop-1.6 - 产品名称中的正则表达式问题(TPL prestashop 1.6)
- javascript - 如何在javascript中减去两个时间字符串(HH:MM)?
- xpath - 如何使用机器人框架获取 div 的最后一个定位器
- c# - 是否可以使用 ef core 和迁移来做全索引表?