使用循环行值或布尔值来定义 pandas groupby 的边界

Use recurring row values or booleans to define boundaries of pandas groupby

我有一个 pandas DataFrame,它有一个布尔列来指示给定行是否实际上是一个 header(相对于一个值)。我希望能够从 header 行和下一个 header.

之前的所有后续行中创建 pandas groupby objects

想象一个包含以下列的 DataFrame:

pd.Series([True, False, False, False, True, False False])

我想要 运行 一个 groupby 语句,将这个 DataFrame 分成两组:[True, False, False, False] 和 [True, False False]。我该怎么做?

在 B 列上执行 cumsum,然后用它来分组:

df.groupby(df['your_col'].cumsum())

这是一个示例:

df

   A      B
0  a   True
1  b  False
2  c  False
3  d  False
4  e   True
5  f  False
6  g  False

df.groupby(df['B'].cumsum())['B'].agg(list)

B
1    [True, False, False, False]
2           [True, False, False]
Name: B, dtype: object