2016-07-05 2 views
0

я следующие наборы данных:Python панд - сравнение определенных строк и объединить

Group LowerTier UpperTier Value 
    1   0   99   0  
    1   100   199  0 
    1   200   299  10 
    1   300   1000  20 
    2   0   249  0 
    2   250   1000  5 
(...) 

То, что я хотел бы получить ж/Python и панд следующие:

Group LowerTier UpperTier Value 
    1   0   199   0  
    1   200   299  10 
    1   300   1000  20 
    2   0   249  0 
    2   250   1000  5 

В словах: Я хотел бы объедините все строки внутри группы, которые имеют такое же значение в значении при условии, что я получу минимум LowerTier и max UpperTier для двойного значения (например, Group 1; value = 0).

Как я могу получить эту таблицу?

Заранее спасибо

ответ

3

Пробовали ли вы groupby с aggregate?

df.groupby(['Group','Value'],as_index=False).agg({'LowerTier':min,'UpperTier':max}) 

Сначала создайте dataframe:

df = pd.DataFrame({'Group':[1,1,1,1,2,2],'LowerTier':[0,100,200,300,0,250],'UpperTier':[99,199,299,1000,249,1000],'Value':[0,0,10,20,0,5]}) 

Затем нанесите groupby с agg:

df.groupby(['Group','Value'],as_index=False).agg({'LowerTier':min,'UpperTier':max}) 

выход:

Group Value UpperTier LowerTier 
0 1  0  199   0 
1 1  10  299   200 
2 1  20  1000  300 
3 2  0  249   0 
4 2  5  1000  250 
+0

Большое спасибо! Я работал с сводной таблицей, но я не мог получить правильный фрейм данных. – Sebastian

+0

Добро пожаловать, удачи с Пандами, это очень мощный, и стоит изучить его! – ysearka

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