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)