【发布时间】:2021-09-22 08:34:39
【问题描述】:
我有 2 个数据集可供使用:
ID Date Amount
1 2020-01-02 1000
1 2020-01-09 200
1 2020-01-08 400
另一个数据集告诉每个 ID 是一周中最频繁的一天和一个月中最频繁的一周(有多个这样的 ID)
ID Pref_Day_Of_Week_A Pref_Week_Of_Month_A
1 3 2
对于此 ID,星期四是 ID 1 的一周中最频繁的一天,该月的第 2 周是该月最频繁的一周。
我希望找到所有 ID 在一周中最频繁的一天和一个月中最频繁的一周发生的所有金额的总和(因此需要 groupby):
ID Amount_On_Pref_Day Amount_Pref_Week
1 1200 600
如果有人能帮助我使用 pandas 计算这个数据框,我将不胜感激。作为参考,我已使用此函数查找给定日期的月份中的星期几:
#https://stackoverflow.com/a/64192858/2901002
def weekinmonth(dates):
"""Get week number in a month.
Parameters:
dates (pd.Series): Series of dates.
Returns:
pd.Series: Week number in a month.
"""
firstday_in_month = dates - pd.to_timedelta(dates.dt.day - 1, unit='d')
return (dates.dt.day-1 + firstday_in_month.dt.weekday) // 7 + 1
【问题讨论】: