根据日期列熊猫过滤数据框

Posted

技术标签:

【中文标题】根据日期列熊猫过滤数据框【英文标题】:Filter data frame based on date columns pandas 【发布时间】:2020-05-05 00:52:46 【问题描述】:

我有一个如下图所示的 pandas 数据框。

Unit_ID    Added_Date                   Status         
105        2019-10-02 07:18:18          Rented
106        2020-15-01 07:18:17          Rented
105        2019-10-02 07:18:19          Rented
108        2020-15-01 07:18:18          Vacant

从上面我想根据 Date 列找出最近 10 天内添加的 Unit_ID。

预期输出:

Unit_ID    Added_Date                   Status         
106        2020-15-01 07:18:17          Rented
108        2020-15-01 07:18:18          Vacant

【问题讨论】:

【参考方案1】:

您还可以使用.dt.days 访问器并与le 10 进行比较:

#df['Added_Date']=pd.to_datetime(df['Added_Date'],format='%Y-%d-%m %H:%M:%S')
df[(pd.to_datetime('today') - df['Added_Date'] ).dt.days.le(10)]

   Unit_ID          Added_Date  Status
1      106 2020-01-15 07:18:17  Rented
3      108 2020-01-15 07:18:18  Vacant

【讨论】:

【参考方案2】:

这是一种方法:

today = pd.to_datetime('today')
n = 10 # last n days

filter_criteria = df['Added_Date'].sub(today).abs().apply(lambda x: x.days <= n)

df.loc[filter_criteria]

     Unit_ID Added_Date           Status
106      106 2020-01-15 07:18:17  Rented
108      108 2020-01-15 07:18:18  Vacant

【讨论】:

【参考方案3】:

这是使用pd.DateOffset的另一种方式

from datetime import datetime
df.loc[df['Added_Date'] >= (datetime.today() - pd.DateOffset(days=10))]

   Unit_ID          Added_Date  Status
1      106 2020-01-15 07:18:17  Rented
3      108 2020-01-15 07:18:18  Vacant

【讨论】:

以上是关于根据日期列熊猫过滤数据框的主要内容,如果未能解决你的问题,请参考以下文章

按时间戳列过滤/选择熊猫数据帧的行

如何根据条件过滤后的熊猫数据框来导出列

大熊猫在grouby之后按日期时间过滤

为列过滤熊猫数据框==无

熊猫数据框 - 按字符串过滤/选择列是不是保留顺序?

当列数据类型为列表时如何过滤熊猫数据框