Разбить Dataframe на несколько DataFrame в зависимости от того, содержит ли строка строку - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу разделить DataFrame, основываясь на том, содержит ли строка определенную строку «Клиент» и все последующие строки до другой строки, содержащей «Клиент», то есть от

c_name       |   cost   | p_date
Customer: xx |          | 
hat          |    12    |   1/1/2018
bat          |    13    |   2/3/2018
Customer: xy |          |
mat          |    14    |   1/2/2018

до DF1

c_name       |   cost   | p_date
Customer: xx |          | 
hat          |    12    |   1/1/2018
bat          |    13    |   2/3/2018

DF2

c_name       |   cost   | p_date
Customer: xy |          |
mat          |    14    |   1/2/2018

Я знаю, что могу получить, где разделить DataFrame на основе df.c_name.str.contains('Customer'), но как мне использовать это для разделения DataFrame?

1 Ответ

0 голосов
/ 07 декабря 2018

str.contains + groupby

m = df.c_name.str.contains('Customer').cumsum()
d = {f'df{i}': g for i, g in df.groupby(m)}

for k, v in d.items():
    print(k)
    print(v, end='\n\n')

df1
         c_name  cost    p_date
0  Customer: xx   NaN       NaN
1           hat  12.0  1/1/2018
2           bat  13.0  2/3/2018

df2
         c_name  cost    p_date
3  Customer: xy   NaN       NaN
4           mat  14.0  1/2/2018

Для доступа к отдельным фреймам данных просто используйте d['df1'] и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...