首页 > 解决方案 > 如何检查日期(手动传递的变量)是否在熊猫数据框列中的给定开始日期和结束日期之间?

问题描述

我需要手动将 2 个日期传递给变量,并且我需要过滤一个 pandas 数据框,其中日期值介于 2 个日期变量之间。

我面临的问题是,数据框中的列是“datetime64 [ns]”类型,但该值仅包含日期(例如:yyyy-mm-dd。没有时间。)并且能够基于过滤在这种情况下,它尝试通过执行以下操作手动将日期传递给变量:

start = np.array(np.datetime64('2020-03-01'))
end = np.array(np.datetime64('2020-03-31'))

然后,我尝试通过执行以下操作来过滤结果:

filter1 = df1['TRANSACTION_DT'] > start
filter2 = df1['TRANSACTION_DT'] < end

df1.where(filter1 & filter2, inplace=True)

但是,当我这样做时,我得到了所有的空值。如何声明 datetime64 变量并手动传递日期以便过滤数据框。

请帮忙!谢谢!

标签: pythonpandasdataframe

解决方案


您可以将简单的聚类与 & 子句一起使用

import pandas as pd
from datetime import datetime


df = pd.DataFrame({
    "date": [datetime(2020,1, 2), datetime(2019, 11, 2), datetime(2018, 1, 2)],
})
df = df[(df['date'] > '2019-10-10') & (df['date'] < '2019-12-01')]

df = pd.DataFrame({
    "date": ["2020-01-02", "2019-11-02", "2018-01-02"],
df = df[(df['date'] > '2019-10-10') & (df['date'] < '2019-12-01')]

推荐阅读