Разделить строки кадра данных 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')


person Cody Glickman    schedule 05.11.2020    source источник


Ответы (1)


Можно использовать eq для проверки строк заголовков, а затем сгруппировать по общей сумме:

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
person Quang Hoang    schedule 05.11.2020
comment
Спасибо @Quang Hoang, это отлично работает! Я ценю быстрый ответ. - person Cody Glickman; 06.11.2020