簡體   English   中英

當在 dataframe 列中找到某個值時,如何將 pandas dataframe 分解為子數據幀?

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

我有 dataframe 看起來像這樣:

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”時,我想將這個 dataframe 分成 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,使用data['event'].eq('A').cumsum()groupby與輔助石斑魚一起使用:

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())]

output(沒有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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM