Pandas:如何从日期获取一年中的某一天


您可以使用以下基本语法从 pandas DataFrame 中的日期列获取一年中的某一天:

 df[' day_of_year '] = df[' date ']. dt . dayofyear

此特定示例创建一个名为day_of_year的新列,其中包含日期列中的值所在年份的第几天。

请注意, day_of_year值的范围为 1(1 月 1 日)到 365(12 月 31 日)。

以下示例展示了如何在实践中使用此语法。

示例:从 Pandas 中的日期获取一年中的某一天

假设我们有以下 pandas DataFrame,其中包含有关商店在不同日期的总销售额的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd.date_range (start=' 1/1/2022 ', freq=' M ', periods= 10 ),
                   ' sales ': [6, 8, 10, 5, 4, 8, 8, 3, 5, 14]})

#view DataFrame
print (df)

         dirty date
0 2022-01-31 6
1 2022-02-28 8
2 2022-03-31 10
3 2022-04-30 5
4 2022-05-31 4
5 2022-06-30 8
6 2022-07-31 8
7 2022-08-31 3
8 2022-09-30 5
9 2022-10-31 14

相关:如何在 Pandas 中创建日期范围

我们可以使用以下代码创建一个名为day_of_year的新列,其中包含日期列中的一年中的第几天:

 #create new column that contains day of year in 'date' column
df[' day_of_year '] = df[' date ']. dt . dayofyear

#view updated DataFrame
print (df)

        date sales day_of_year
0 2022-01-31 6 31
1 2022-02-28 8 59
2 2022-03-31 10 90
3 2022-04-30 5 120
4 2022-05-31 4 151
5 2022-06-30 8,181
6 2022-07-31 8,212
7 2022-08-31 3,243
8 2022-09-30 5,273
9 2022-10-31 14,304

名为day_of_year的新列包含日期列一年中的第几天。

应该注意的是,如果您使用的是闰年,此函数会自动将可能值的范围从 365 扩展到 366。

另请注意,如果您正在使用的列是字符串列,则必须首先使用pd.to_datetime()将字符串转换为可识别的日期:

 #convert string column to datetime and calculate day of year
df[' day_of_year '] = pd. to_datetime (df[' date ']). dt . dayofyear

注意:您可以在此处找到 pandas dayofyear函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中添加和减去日期中的天数
如何在 Pandas 中选择两个日期之间的行
如何在 Pandas 中根据年、月、日创建日期列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注