【问题标题】:Is there an efficient way to categorise rows of sequential increasing data into a group in a pandas data frame有没有一种有效的方法可以将连续增加的数据行分类到熊猫数据框中的组中
【发布时间】:2021-04-14 08:15:26
【问题描述】:

我有一个大致如下的数据集(第一列是索引):

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 循环,第一个找到每个测量条件的开始,第二个计数到每个测量条件的结尾,然后标记该组。不过这似乎效率不高,不知道有没有更好的方法?

【问题讨论】:

    标签: python pandas dataframe loops


    【解决方案1】:

    如果每个度量从1 开始比较它的值并添加累积和:

    df['group'] = df['measurement'].eq(1).cumsum()
    

    【讨论】:

    • 完美,谢谢!我使用布尔索引和 shift() 对其进行了一些调整,以解决不以相同值开头的罕见循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2018-08-13
    • 1970-01-01
    • 2020-04-27
    • 2018-03-19
    • 2023-02-03
    相关资源
    最近更新 更多