如何在Pandas中获取包含最大数据的列的值?

时间:2017-02-03 11:13:53

标签: python pandas dataframe data-analysis

我有一个数据框,每个特定user_id有多行,我正在尝试创建一个新的数据框,汇总每个user_id的值。例如,原始数据框df

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

从此我想为每个用户创建一个新的数据框df_agg,如下所示:

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

我通过像这样的小组来获得col1_sum

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

如何将col2_latest列添加到此数据框?

1 个答案:

答案 0 :(得分:1)

sumaggregate需要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