代码之家  ›  专栏  ›  技术社区  ›  AmirX

如何根据列的升序创建组?

  •  0
  • AmirX  · 技术社区  · 2 年前

    这是我的DataFrame:

    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 
    6   3 
    

    从上到下,最远 a 正在增加/平等群体不变。这就是为什么前三行在一组中。然而,连续 3 已经减少(即20>10)。这就是第二组的起点。同样的逻辑也适用于其他群体。

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

    import numpy as np
    df['dir'] = np.sign(df.a.shift(-1) - df.a)
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Panda Kim    2 年前

    密码

    可能有4组

    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]