Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 筛选数据帧以限制在给定的日期范围内_Python_Pandas_Dataframe - Fatal编程技术网

Python 筛选数据帧以限制在给定的日期范围内

Python 筛选数据帧以限制在给定的日期范围内,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,看起来像这样 2684 A878 2015-01-01 False M13 2685 A878 2015-01-01 False M50 2686 A879 2015-01-01 False M96 5735 A879 2015-01-02 False M19 ... ... ... ... ... 89487 A879 2015-01-30 False M38 89488 A879

我有一个熊猫数据框,看起来像这样

2684    A878    2015-01-01  False   M13
2685    A878    2015-01-01  False   M50
2686    A879    2015-01-01  False   M96
5735    A879    2015-01-02  False   M19
... ... ... ... ...
89487   A879    2015-01-30  False   M38
89488   A879    2015-01-30  False   M35
89489   A879    2015-01-30  False   M33
89490   A879    2015-01-30  True    M66
89491   A879    2015-01-30  False   M4
我希望通过第二列(=A879)的特定值和日期的特定偏移量来过滤数据帧。例如,如果我的第二列值为A879,我的期望日期为2015-01-15,则我希望所有第二列值为A879且在2015-01-15之前超过2天但少于5天的行。所以看起来应该是这样的

89489   A879    2015-01-12  False   M33
89490   A879    2015-01-13  True    M66
89491   A879    2015-01-14  False   M4
有什么好办法吗?

怎么样

import datetime as dt

REFERENCE_DATE = dt.date(2015, 1, 15)

df["date"] = pd.to_datetime(df["date"])

df[
    df["date"].dt.date.between(
        REFERENCE_DATE - dt.timedelta(days=5), REFERENCE_DATE - dt.timedelta(days=2)
    )
    & df["code"].eq("A879")
]

AttributeError:只能使用具有datetimelike值的.dt访问器,因此我想同时应用第二个条件(=A879)@robotlover请检查我的更新。我不知道你的栏名是什么,但你应该用“代码”替换为“代码”,谢谢。这很有效。但是你知道我怎样才能修改代码,让我包含像-2到-5天这样的信息吗?因此,不要明确指定日期。例如,使用
dt.timedelta(days=-2)