2016-07-25 5 views
2

Я хотел бы разделить один DataFrame на N Dataframes на основе столбцов X и Z, где они одинаковы (как eachother по значению столбца).Сплит Python Dataframe в несколько DataFrames (где выбранные строки одинаковы)

Например, этот вход:

df = 
    NAME X Y Z Other 
0 a 1 1 1 1 
1 b 1 1 2 2 
2 c 1 2 1 3 
3 d 1 2 2 4 
4 e 1 1 1 5 
5 f 2 1 2 6 
6 g 2 2 1 7 
7 h 2 2 2 8 
8 i 2 1 1 9 
9 j 2 1 2 0 

есть ли этот вывод:

df_group_0 = 
    NAME X Y Z Other 
0 a 1 1 1 1 
2 c 1 2 1 3 
4 e 1 1 1 5 

df_group_1 = 
    NAME X Y Z Other 
1 b 1 1 2 2 
3 d 1 2 2 4 

df_group_2 = 
    NAME X Y Z Other 
6 g 2 2 1 7 
8 i 2 1 1 9 

df_group_3 = 
    NAME X Y Z Other 
7 h 2 2 2 8 
9 j 2 1 2 0 

Возможно ли это?

ответ

3

groupby генерирует итератор кортежей с первым элементом является идентификатор группы, так что если вы итерация по окуням и извлекать второй элемент из каждого кортежа, вы можете получить список фреймов данных, каждый из которых имеет уникальную группу:

grouper = [g[1] for g in df.groupby(['X', 'Z'])] 

grouper[0] 
NAME X Y Z Other 
0 a 1 1 1 1 
2 c 1 2 1 3 
4 e 1 1 1 5 

grouper[1] 
NAME X Y Z Other 
1 b 1 1 2 2 
3 d 1 2 2 4 

grouper[2] 
NAME X Y Z Other 
6 g 2 2 1 7 
8 i 2 1 1 9 

grouper[3] 
NAME X Y Z Other 
5 f 2 1 2 6 
7 h 2 2 2 8 
9 j 2 1 2 0 
+1

О, вы даже поймали ИМЯ 5, которую я пропустил. Спасибо – user2921352

+2

@ пользователь2921352 если это ответили на ваш вопрос. Не забудьте отметить это как ответ, thx. – piRSquared

Смежные вопросы