如何解决条目在一年内至少两个不同的月份出现在每个索引中
索引日期(dd.mm.yy)
A 1.1.20
A 1.2.20
B 1.1.20
B 5.5.21
C 1.1.20
C 10.1.20
D 1.1.20
D 10.1.20
D 10.5.20
我想查看一个条目是否在至少两个不同的月份出现在每个索引一年内
所以对于索引 A,D 答案是 True 而对于 B,C 是 False 预期输出:
我可以使用 Grouper 轻松查看它是否出现在至少两个不同的月份(或年份)
df.groupby([index,pd.Grouper(freq='M',key='date]).agg('count')
看看是否计数> 0
但如何轻松检查两个条件是否适用?
我尝试创建自己的 agg 函数或使用 Grouper。
解决方法
如果我们想要数据框的形状和以前一样:
df['date'] = pd.to_datetime(df.date,dayfirst=True)
def resampled_data(freq):
return df.groupby(['index',pd.Grouper(key='date',freq=freq)]).index.transform('count')
yg = resampled_data('Y')
mg = resampled_data('M')
df['bool'] = ((yg >= 2) & (mg != 2)) | ((yg >= 3) & (mg >=2))
输出
index date bool
0 A 2020-01-01 True
1 A 2020-02-01 True
2 B 2020-01-01 False
3 B 2021-05-05 False
4 C 2020-01-01 False
5 C 2020-01-10 False
6 D 2020-01-01 True
7 D 2020-01-10 True
8 D 2020-05-10 True
,
df_per_month = pd.DataFrame.from_dict(df.groupby([index,df.date.dt.year,df.date.dt.month]).groups.keys())
df_max_entries_in_a_year = df_per_month.groupby([0,1]).agg('count').reset_index().groupby([0])[2].agg('max')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。