我有以下数据集,并希望根据从日期算起的供应商和月份对值求和,同时还应用一个仅返回每月第一个星期一的过滤器。
date vendor value
07/01/19 Amazon 10
07/01/19 Amazon 500
04/02/19 ebay 60
04/03/19 Amazon 130
06/03/19 ebay 20
25/03/19 pcworld 250
我相信大熊猫将是最好的前进方式,但是我是python的新手,所以不知道。
vendor month value
Amazon 1 510
Amazon 3 130
ebay 2 60
答案 0 :(得分:1)
您可以这样做:
df['date'] = pd.to_datetime(df['date'], dayfirst=True)
#You data appears to be dayfirst
df_filt = df.where((df['date'].dt.dayofweek == 0) & (df['date'].dt.day < 8)).dropna(how='all')
#Filter out all data whre date isn't on monday nor in the first seven day of a month
df_fil.groupby(['vendor',df_fil['date'].dt.month])['value'].agg('sum').reset_index().rename(columns={'date':'month'})
#groupby with agg
输出:
vendor month value
0 Amazon 1 510.0
1 Amazon 3 130.0
2 ebay 2 60.0