pandas 按日期范围筛选数据的实现

  • Post category:Python

当你拥有一个包含日期列的pandas数据集时,你会经常需要根据日期范围筛选数据。这个过程有两种常用的方法:使用loc方法和使用query方法。

使用loc方法筛选数据

loc方法可以基于行和列的标签进行索引。当按照日期范围筛选数据时,需要设置一个布尔列表,它返回数据集中是否满足筛选条件。以下是使用loc方法筛选数据的基本步骤:

  1. 设置日期列为索引列

python
df.set_index('date', inplace=True)

  1. 创建一个布尔列表,指示满足筛选条件的行

python
condition = (df.index > '2021-01-01') & (df.index <= '2021-02-01')

这个布尔列表是通过比较日期列是否在2021年1月1日到2月1日之间来创建的。

  1. 使用loc方法筛选数据并返回结果

python
filtered_df = df.loc[condition]

完整示例代码如下:

import pandas as pd

# 创建数据集
df = pd.DataFrame({'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-02-01', '2021-02-02'],
                   'value': [1, 2, 3, 4, 5]})

# 将日期列设置为索引列
df.set_index('date', inplace=True)

# 创建一个布尔列表,指示满足筛选条件的行
condition = (df.index > '2021-01-01') & (df.index <= '2021-02-01')

# 使用loc方法进行数据筛选
filtered_df = df.loc[condition]

# 打印结果
print(filtered_df)

该代码将打印输出一个包含2021年1月2日到2月1日之间的所有行的数据集。

使用query方法筛选数据

query方法允许你使用类似SQL的查询语言来查询数据。以下是使用query方法筛选数据的基本步骤:

  1. 将日期列的格式转换为datetime格式

python
df['date'] = pd.to_datetime(df['date'])

  1. 使用query方法筛选数据并返回结果

python
filtered_df = df.query('date > "2021-01-01" and date <= "2021-02-01"')

完整示例代码如下:

import pandas as pd

# 创建数据集
df = pd.DataFrame({'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-02-01', '2021-02-02'],
                   'value': [1, 2, 3, 4, 5]})

# 将日期列转换为datetime格式
df['date'] = pd.to_datetime(df['date'])

# 使用query方法进行数据筛选
filtered_df = df.query('date > "2021-01-01" and date <= "2021-02-01"')

# 打印结果
print(filtered_df)

该代码将打印输出一个包含2021年1月2日到2月1日之间的所有行的数据集。

以上是两种常用的按照日期范围筛选数据的方法,你可以根据实际情况选择更适合自己的方法。