如何在Pandas中基于日期过滤数据框架行
不同地区遵循不同的日期惯例(YYY-MM-DD,YYY-DD-MM,DD/MM/YY,等等)。要在数据中处理这样的字符串是很困难的。Pandas to_datetime()函数__允许将字符串格式的日期和时间转换为datetime64。这种数据类型有助于提取日期和时间的特征,从 “年 “到 “微秒”。
要根据日期过滤行,首先将DataFrame中的日期格式化为datetime64类型。然后使用Pandas包中的DataFrame.loc[]和DataFrame.query[]函数来指定一个过滤条件。结果,获得数据的子集,也就是过滤后的DataFrame。让我们来看看一些相同的例子。
我们将使用一个由特定日期的帖子数量组成的样本DataFrame。将样本数据中的日期转换成datetime64类型,如下所示。
示例 1:
使用DataFrame.loc[]函数根据日期过滤数据,loc[]函数用于通过标签或布尔数组访问DataFrame的一组行和列。在这个例子中,loc[]中的条件语句如果行满足条件(日期在9月1日至15日之间),则返回一个布尔数组,数值为True,否则为False。然后loc[]函数只返回那些具有True值的行。
输出:
示例 2:
使用DateTimeIndex(dt)来访问单独的日期时间属性,如年、月、日、工作日、小时、分钟、秒、微秒等,作为loc[]函数的条件,如下。
注意:日期值应采用datetime64格式。
输出:
示例 3:
使用DataFrame.query()函数根据日期过滤数据,query()函数过滤Pandas DataFrame,并通过在引号中指定一个条件来选择行。如下图所示,query()中的条件是选择8月份的数据(指定日期范围)。DataFrame的列被默认放在查询命名空间中,所以日期列可以在没有索引的情况下被访问(只需指定列名)。
输出: