过滤 pandas 数据框日期列 X 个月(从月初算起)

无法找到解决我的问题的方法。


假设我有一个 df:


df = pd.DataFrame({'col':np.random.randn(len(date_rng)),'created_at':pd.date_range('2020-01-01', '2020-12-31', freq='D')})

df

输出是:


       col      created_at

0   1.764052    2020-01-01

1   0.400157    2020-01-02

2   0.978738    2020-01-03

3   2.240893    2020-01-04

4   1.867558    2020-01-05

... ... ...

361 0.003771    2020-12-27

362 0.931848    2020-12-28

363 0.339965    2020-12-29

364 -0.015682   2020-12-30

365 0.160928    2020-12-31

所以问题是我想过滤数据框以显示过去 6 个月到月初的数据。例如,如果今天(2020 年 10 月 23 日),我希望数据框提供 4 月 1 日以来的结果。


如果是 11 月,则无论 11 月的日期如何,第一个日期结果都应为 5 月 1 日。


关于如何做到这一点有什么想法吗?


这应该自动运行,所以类似:


df = df[(df.created_at.dt.month >= datetime.datetime.utcnow().month)

                    & (df.created_at.dt.year==datetime.datetime.utcnow().year)]

不会工作。


谢谢!!!


牛魔王的故事
浏览 51回答 1
1回答

鸿蒙传说

您可以使用 Between 来指定两个值之间的条件:today = datetime.today()target = today - timedelta(days=180)df = df[lambda x: x['created_at'].between(datetime(target.year,target.month,1),today)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python