这是我的数据框:
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)
代码
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]