如何根据列的递增连续值创建分组?
这是我的数据表:
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
从上到下,只要的值在增加或者保持不变,组就不会改变。这就是为什么前面三行数据在同一组里。但是在第3行,的值下降了(也就是20大于10)。所以这就标志着第二组的开始。后面的组也是用同样的逻辑来划分的。
这是我尝试过的一种方法。但我不知道该怎么继续:
import numpy as np
df['dir'] = np.sign(df.a.shift(-1) - df.a)
1 个回答
2
代码
可能有4个组
dfs = [d for _, d in df.groupby(df['a'].diff().lt(0).cumsum())]
深度优先搜索
[ a
0 10
1 14
2 20,
a
3 10
4 12,
a
5 5,
a
6 3]