过滤熊猫数据框以限制在给定日期范围内

时间:2020-01-03 16:55:27

标签: python pandas dataframe

我有一个像这样的熊猫数据框

let finalarr = []

for (i = 0; i <= 5; i++) {
  let arr = [1, 2, 3, 4].sort(function(a, b) {
    return 0.5 - Math.random()
  })
  finalarr.push(arr)
}

console.log(finalarr)

我想通过第二列的特定值(== A879)和日期的特定偏移量来过滤数据帧。例如,如果我的第二列值为A879,而我希望的日期为2015-01-15,则我希望第二列的所有具有A879的行都比2015-01-15早2天但少于5天。因此它应该看起来像。

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

有没有很好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

怎么样

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")
]