我有几百万行的日级数据,如下所示:
date id
2019-01-14 4.000111e+10
2018-02-23 1.501553e+10
2018-01-19 4.000213e+10
2020-01-17 4.006799e+10
2020-02-28 1.000328e+10
我正在尝试使用日期为“ id”列构建数据透视表,然后根据我的ID获取每个月的日期频率。
table = df.pivot_table(index='id', columns='date', aggfunc=len)
由此,我需要找出哪个ID具有每周/每两周/每月的条目。本质上,如果我选择每周,则需要获取基于月的ID,而该月该月只有一笔交易。
jan_filter = df['date'].map(lambda x: x.month) == 1
df_jan = df[jan_filter]
基于此,我可以选择当月仅进行过一次交易的ID。但是,我如何每两周实现一次交易-每两周/每周进行一次交易-每个月的每周进行一次交易
编辑:
预期输出:
每月一次(Id仅每月输入一次):
date id
2019-01-14 40192137123
2019-01-17 12321904367
2019-01-04 71231231238
每周(一个月内,每周至少有一次ID进入该条目):
date id
2019-01-14 40192137123
2019-01-05 40192137123
2019-01-19 40192137123
2019-01-26 40192137123
2019-01-17 12321904367
2019-01-04 12321904367
2019-01-24 12321904367
2019-01-31 12321904367
每两周(该ID在每两周至少有一个条目)
第二次编辑:Week of Month Calculation
我正在使用这种方法计算每月的星期。