2017-02-03 4 views
1

У меня есть dataframe, который имеет несколько строк для каждого конкретного user_id, и я пытаюсь создать новый dataframe, который объединяет значения для каждого user_id. Например, оригинальный dataframe df являетсяКак получить значение столбца с максимальными данными в группе в Pandas?

id user_id  eventdate  col1  col2 
1  100   2015-10-01  2   A 
2  200   2015-11-01  4   B 
3  300   2015-12-01  1   A 
4  100   2016-02-01  3   B 
5  300   2016-03-01  6   C 

Из этого я хочу новый dataframe df_agg для каждого пользователя, как это:

user_id  col1_sum  col2_latest 
100   5    B 
200   4    B 
300   7    C 

я получил col1_sum, делая GroupBy так:

df_agg = pd.DataFrame({'col1_sum': df.groupby('NAME')['col1'].sum()}) 

Как добавить столбец col2_latest в этот фрейм?

ответ

1

Вам нужно aggregate по sum и last:

df_agg = df.groupby('user_id').agg({'col1':'sum','col2':'last'}) 
df_agg = df_agg[['col1','col2']].rename(columns={'col1':'col1_sum','col2':'col2_latest'}) 
           .reset_index() 
print (df_agg) 
    user_id col1_sum col2_latest 
0  100   5   B 
1  200   4   B 
2  300   7   C 
+0

большой. не понимал, что существует последний() метод. принято. – sfactor