Разделить строки фрейма данных pandas до искомого значения столбца на новые фреймы данных

#python #pandas #dataframe #split

#python #pandas #фрейм данных #разделить

Вопрос:

У меня есть фрейм данных, который содержит несколько строк заголовка (комбинация нескольких csv). Есть ли способ разделить фрейм данных обратно на отдельные фреймы данных без использования .iloc? iloc работает, но для моего рабочего процесса это займет много времени.

 data = {'A':  [1,2,3,'A',4,5,6,'A',7,8,9],
        'B': [9,8,7,'B',6,5,4,'B',3,2,1]}
df = pd.DataFrame(data, columns = ['A','B'])

## My current approach:
df1 = df.iloc[:3,]
df2 = df.iloc[4:7,]
df3 = df.iloc[8:,]
  

Есть ли лучший способ разделить фрейм данных путем поиска значений в столбцах? т.е. что-то вроде df1,df2,df3 = df.split(df['A']=='A')

Ответ №1:

Можно использовать eq для проверки строк заголовка, затем groupby на cumsum:

 header_rows = df.eq(df.columns).all(1)
dfs = {k:v for k,v in df[~header_rows].groupby(header_rows.cumsum())}
  

затем, например dfs[0] , дает:

    A  B
0  1  9
1  2  8
2  3  7
  

Комментарии:

1. Спасибо @Quang Hoang, это отлично работает! Я ценю быстрый ответ.