Python Pandas 中如何在两个日期范围内筛选 DataFrame

Python Pandas 中如何在两个日期范围内筛选 DataFrame

Pandas 是 Python 中广泛使用的数据处理库。在 Pandas 中想要筛选 DataFrame 里的特定条件时,我们可以使用 loc 函数。本文将介绍如何使用 loc 函数在 Pandas 中根据两个日期筛选 DataFrame。

准备数据

在介绍如何筛选 DataFrame 前,我们先准备一个测试数据。代码如下:

import pandas as pd

df = pd.DataFrame({
    'date': ['2021-01-01', '2021-01-02', '2021-01-03',
             '2021-01-04', '2021-01-05', '2021-01-06'],
    'data': [1, 3, 2, 4, 5, 6]
})
df['date'] = pd.to_datetime(df['date'])  # 将 date 字符串转换为 datetime 类型

以上代码创建了一个 DataFrame,其中包含两个列:date 和 data。date 列表示日期,data 列中的数字表示某一天的数据。

筛选指定日期范围

在 Pandas 中,根据两个日期筛选 DataFrame 时,我们可以使用 loc 函数和布尔索引。代码如下:

start_date = '2021-01-02'
end_date = '2021-01-05'

df_filtered = df.loc[(df['date'] >= start_date) & (df['date'] <= end_date)]
print(df_filtered)

以上代码中,我们定义了一个起始日期和一个终止日期。然后使用 loc 函数和布尔索引筛选出 DataFrame 中在这两个日期范围内的行。

输出结果为:

        date  data
1 2021-01-02     3
2 2021-01-03     2
3 2021-01-04     4
4 2021-01-05     5

从输出结果中,我们可以看到只输出了在所筛选的日期范围内的行。

选择不同的日期格式

当使用 Pandas 时,日期格式非常重要。如果我们的 DataFrame 中日期格式与所用代码的日期格式不同,则需要在代码中进行转换。以下是转换日期格式的示例代码:

df = pd.DataFrame({
    'date': ['2021/01/01', '2021/01/02', '2021/01/03',
             '2021/01/04', '2021/01/05', '2021/01/06'],
    'data': [1, 3, 2, 4, 5, 6]
})
df['date'] = pd.to_datetime(df['date'], format='%Y/%m/%d')

在以上代码中,我们使用了 format 参数指定日期格式。

筛选两个时间段之间的日期

除了使用具体日期筛选数据以外,我们还可以使用 months,years,weeks,days 等时间区间筛选数据。

下面示例代码将按周筛选特定日期范围中的数据:

start_date = '2021-01-02'
end_date = '2021-01-31'

df_filtered = df.loc[(df['date'] >= start_date) & (df['date'] <= end_date)]
weekdays = [0, 1, 2, 3, 4, 5, 6]
weekly_filtered = df_filtered[df_filtered['date'].dt.weekday.isin(weekdays)]
print(weekly_filtered)

以上代码会筛选出 start_date 和 end_date 日期之间的数据。然后,使用 dt 属性检索日期,获取这段时间内的所有周日至周六的数据。

结论

通过以上示例代码,您现在已经学会了在 Pandas 中使用 loc 函数根据两个日期范围筛选 DataFrame 的方法。在使用 loc 函数时,确保您使用了正确的日期格式,并清楚您要在日期范围中选择哪些数据。如果您需要更详细的 Pandas教程,建议查看 Pandas 官方文档。Happy coding!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程