我有以下df:
Date Email Amount
0 2020-04-09 john@xxmail.com 10
1 2020-05-09 john@xxmail.com 30
2 2020-08-20 mary@xxmail.com 40
3 2020-09-20 mary@xxmail.com 20
4 2020-05-04 nick@xxmail.com 10
5 2020-06-04 nick@xxmail.com 10
6 2020-07-04 nick@xxmail.com 10
7 2020-07-04 nick@xxmail.com 125
我需要获取每个电子邮件的最大日期,然后从这些日期/电子邮件中获取最大金额。
因此,对于最大日期,中间步骤是这样的:
Date Email Amount
0 2020-05-09 john@xxmail.com 30
1 2020-09-20 mary@xxmail.com 20
2 2020-07-04 nick@xxmail.com 10
3 2020-07-04 nick@xxmail.com 125
最后我们得到最大金额:
Date Email Amount
0 2020-05-09 john@xxmail.com 30 # general max date and max amount
1 2020-09-20 mary@xxmail.com 20 # not general max amount
2 2020-07-04 nick@xxmail.com 125 # max amount of max date
对我来说,这似乎是一个双重的分组,但是我不确定。
说明:
答案 0 :(得分:0)
日期和数量分别分组并汇总在一起。
df['Date'] = pd.to_datetime(df['Date'])
df_d = df.groupby('Email')['Date'].agg(max).reset_index()
df_a = df.groupby('Email')['Amount'].agg(max).reset_index()
final = pd.concat([df_d,df_a],axis=1)
final.columns = ['Date', 'Email', 'Email1', 'Amount']
final = final[['Date', 'Email', 'Amount']]
final
Date Email Amount
0 2020-05-09 john@xxmail.com 30
1 2020-09-20 mary@xxmail.com 40
2 2020-07-04 nick@xxmail.com 125