📌  相关文章
📜  如何根据 Pandas 中的日期过滤 DataFrame 行?(1)

📅  最后修改于: 2023-12-03 14:53:09.919000             🧑  作者: Mango

如何根据 Pandas 中的日期过滤 DataFrame 行?

如果你正在使用 Pandas 处理时间序列数据,那么你需要知道如何根据日期过滤你的 DataFrame。在本文中,我们将介绍如何使用 Pandas 进行日期过滤,并提供一些例子。

准备工作

在开始之前,我们需要导入 Pandas 库和创建一个示例 DataFrame:

import pandas as pd

data = {'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'],
        'value': [10, 20, 30, 40]}

df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])

这个示例 DataFrame 包括两列:日期和值。我们将日期列转换为 Pandas DatetimeIndex 对象。

根据日期过滤 DataFrame 行

要根据日期过滤 DataFrame 行,我们可以使用 Pandas 的 loc 方法和布尔条件。例如,我们可以通过以下代码过滤出 2021 年 1 月 2 日之后的所有行:

df.loc[df['date'] >= '2021-01-02']

这将返回一个 DataFrame,其中包括 2021 年 1 月 2 日、1 月 3 日和 1 月 4 日的行。

要根据月份、年份或其他日期属性过滤 DataFrame 行,我们可以使用 Pandas DatetimeIndex 对象的访问器。例如,我们可以根据月份过滤出 2021 年 1 月的所有行:

df.loc[df['date'].dt.month == 1]

这将返回一个 DataFrame,其中包括 2021 年 1 月的所有行。

示例

以下是一些示例,演示如何使用 Pandas 进行日期过滤。

过滤 2021 年 1 月 2 日之后的所有行
df.loc[df['date'] >= '2021-01-02']
过滤 2021 年 1 月的所有行
df.loc[df['date'].dt.month == 1]
过滤 2021 年的所有行
df.loc[df['date'].dt.year == 2021]
过滤 2021 年 1 月 1 日至 2021 年 1 月 3 日之间的所有行
df.loc[(df['date'] >= '2021-01-01') & (df['date'] <= '2021-01-03')]
过滤 2021 年 1 月 1 日和 2021 年 1 月 3 日的行
df.loc[df['date'].isin(['2021-01-01', '2021-01-03'])]
结论

在本文中,我们介绍了如何在 Pandas 中使用日期过滤 DataFrame 行。我们使用了 Pandas DatetimeIndex 对象的访问器,以及 loc 方法和布尔条件。我们还提供了一些实用的示例,帮助您快速入门。