如何根据列的上升条纹创建组?

问题描述 投票:0回答:1

这是我的数据框:

import pandas as pd
df = pd.DataFrame(
    {
        'a': [10, 14, 20, 10, 12, 5, 3]
    }
)

这是预期的输出。我想创建三个组:

    a
0  10
1  14
2  20

    a
3  10
4  12

    a
5   5

从上到下,直到

a
增加/相等组不变。这就是前三行位于一组的原因。然而,在第
3
行中,
a
有所减少(即 20 > 10)。这就是第二组开始的地方。同样的逻辑也适用于其他组。

这是我的尝试之一。但我不知道如何继续:

import numpy as np
df['dir'] = np.sign(df.a.shift(-1) - df.a)
  
python pandas dataframe group-by
1个回答
0
投票

代码

dfs = [d for _, d in df.groupby(df['a'].diff().lt(0).cumsum())]

dfs

[    a
 0  10
 1  14
 2  20,
     a
 3  10
 4  12,
    a
 5  5,
    a
 6  3]
© www.soinside.com 2019 - 2024. All rights reserved.