2016-05-19 6 views
1

У меня есть кадр данных, который я хотел бы, чтобы сгруппировать по двум параметрам (1) Последовательная нумерация в том же первом столбце и (2) соответствие значения во втором столбцеГруппировка по нескольким параметрам, используя панды dataframe

кадра данных :

In [20]: import pandas as pd 

In [21]: df1 = pd.DataFrame ({ "res": [30, 31, 35, 36], "ss": ["H", "H", "H", "E"], "AA": ["A", "B", "C", "D"]}) 

In [22]: df1 
Out[22]: 
    res ss AA 
0 30 H A 
1 31 H B 
2 35 H C 
3 36 E D 

Желаемый выход:

group 1: (30, H, A), (31, H, B)

group 2: (35, H, C)

group 3: (36, E, D)

Группа 1 включает в себя первые 2 строки, так как 30 и 31 являются последовательными и второй матч столбцы. Группа 2 создана потому, что 31 и 35 в столбце 1 не являются последовательными. Группа 3 создана потому, что H и E не совпадают.

Я пытаюсь использовать groupby и перечислять вместе, но я не могу их комбинировать.

Identify groups of continuous numbers in a list

grouping rows in list in pandas groupby

Я признателен за любые советы о том, как совместить выборы

+0

Я вообще не понимаю ваш желаемый результат. Что такое «AB, C, D», и как вы его получите из 'df1'? Пожалуйста, отредактируйте свой вопрос, чтобы быть более конкретным. – DSM

+0

@DSM Я редактировал свой вопрос. Надеюсь, теперь это становится яснее. – Vonler01

ответ

0

я взял некоторые вольности с тем, что вы имели в виду. Дайте мне знать, правильно ли я понял.

Установка: скопировать & пасты создать проблему

import pandas as pd 

df1 = pd.DataFrame ({"res": [30, 31, 35, 36], 
        "ss": ["H", "H", "H", "E"], 
        "AA": ["A", "C", "D", "B"]}) # I made 'F' a 'B' 

df1 

df1 выглядит следующим образом:

AA res ss 
0 A 30 H 
1 C 31 H 
2 D 35 H 
3 B 36 E 

Я считаю, что вы просто хотите sort не groupby.

Решение

print df1.sort_values(['AA', 'res']) 

Похоже:

AA res ss 
0 A 30 H 
3 B 36 E 
1 C 31 H 
2 D 35 H 

Однако части вашего вопроса, не имеют смысла. Надеюсь, это полезно.

+0

Извините, я перепутал столбцы. Столбец 1 должен иметь номера. Столбец второй должен иметь либо «H», либо «E», а в последнем столбце должны быть буквы. Я хочу создать группы, где первые столбцы являются последовательными, а второй столбец соответствует. I.e 30, H, A и 31, H, B для одной группы. 35, H, D - новая группа, потому что 31 и 35 не являются последовательными. 36, E, C будет новой группой, потому что H и E не совпадают. – Vonler01

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