python - 有没有一种有效的方法可以将连续增加的数据行分类为熊猫数据框中的一组
问题描述
我有一个大致如下所示的数据集(第一列是索引):
measurement value
0 1 0.617350
1 2 0.394176
2 3 0.775822
3 1 0.811693
4 2 0.621867
5 3 0.743718
6 4 0.183111
7 1 0.118586
8 2 0.274038
9 3 0.871772
我在第二列中的值是按顺序增加测量参数,测试循环通过这些测量参数,在每一步读取读数,然后重新设置并从头开始。
我面临的挑战是我需要在第四列中用标签对每个周期进行分组。
measurement value group
0 1 0.617350 1
1 2 0.394176 1
2 3 0.775822 1
3 1 0.811693 2
4 2 0.621867 2
5 3 0.743718 2
6 4 0.183111 2
7 1 0.118586 3
8 2 0.274038 3
9 3 0.871772 3
我能想到的唯一解决方案是有两个嵌套的 for 循环,第一个找到每个测量条件的开始,第二个计数到每个测量条件的结尾,然后标记该组。这似乎不是很有效,我想知道是否有更好的方法?
解决方案
如果每个度量从1
比较值开始并添加累积和:
df['group'] = df['measurement'].eq(1).cumsum()
推荐阅读
- jquery - Rails,如何在特定页面上显示 jquery-ui-datepicker 日历?
- r - UseMethod(“filter_”)中的错误:没有适用于“filter_”的方法应用于“c('double','numeric')”类的对象
- c# - 使用未知数量的变量格式化字符串
- python - PyFlink - 如何使用指定的文件输入格式(而不是文本格式)读取文件()?
- python - dict理解丢弃元素
- sql-server - T-SQL:自引用计算字段
- reactjs - 倒计时反应后如何使用户注销
- google-play - 我无法取消发布我的 Google Play 应用。取消发布按钮对我不起作用
- firebase - firebase 托管使用 .env 的 api 键显示错误 > index.cjs.js:536 Uncaught FirebaseError: projectId must be a string in FirebaseApp.options
- javascript - 掷出的两个骰子的值如何相加