【问题标题】:Filter pandas dataframe date column X months from start of the month从月初开始过滤熊猫数据框日期列 X 个月
【发布时间】:2020-10-23 21:56:07
【问题描述】:

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

假设我有一个 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 月时,第一个日期结果应为 5 月 1 日,而与 11 月日期无关。

有什么想法吗?

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

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

不会工作。

谢谢!!!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 2023-03-20
      • 2020-05-05
      • 1970-01-01
      • 2021-10-25
      • 2018-01-18
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多