当在数据框列中找到某个值时,如何将 pandas 数据框分解为子数据框?

How to break a pandas dataframe into sub dataframes when a certain value is found in the dataframe column?

我有这样的数据框:

data = pd.DataFrame({"event": ["A", "B", "C", "A", "A", "E", "P", "S", "A", "Y", "A"]})
data.head(15)

    event
  0 A
  1 B
  2 C
  3 A
  4 A
  5 E
  6 P
  7 S
  8 A
  9 Y
 10 A

每当发现事件“A”时,我想将此数据帧分成 5 个小数据帧。所以我想创建的五个数据框在这种情况下看起来像这样:

1)    event
    0   A
    1   B
    2   C

2)    event
    0   A

3)    event
    0   A
    1   E
    2   P
    3   S
    
4)    event
    0   A
    1   Y

5)    event
    0   A

有什么优雅的方法可以用 Python Pandas 和 Pyspark 做到这一点吗?

使用 pandas,使用 groupby 和使用 data['event'].eq('A').cumsum() 的辅助石斑鱼:

dfs = [g for _,g in data.groupby(data['event'].eq('A').cumsum())]

或者要获取新索引,请添加 reset_index:

dfs = [g.reset_index(drop=True)
       for _,g in data.groupby(data['event'].eq('A').cumsum())]

输出(没有reset_index):

[  event
 0     A
 1     B
 2     C,
   event
 3     A,
   event
 4     A
 5     E
 6     P
 7     S,
   event
 8     A
 9     Y,
    event
 10     A]