Pandas 获取日期的天数

Pandas 获取日期的天数

Pandas是一种流行的用于数据分析和处理的Python库。在使用Python Pandas进行数据分析和处理时,处理日期和时间是一项常见任务。从给定日期获取天数是一个现实生活中许多开发者可能遇到的任务。Pandas提供了许多函数和方法,使得执行此任务变得更加简单。了解如何从日期中获取天数在许多情况下非常有帮助。在本文中,我们将探讨在Pandas中确定星期几的几种方法。到本文结束时,您应该对使用Pandas从日期中提取星期几在您的项目中有一个扎实的理解。

可以使用以下方法来完成该任务:

方法

  • 使用dt.dayofweek

  • 使用pd.to_datetime()和dt.day_name()

  • 在多个日期字符串上使用pd.to_datetime()和dt.day_name()

  • 在多个日期字符串上使用pd.dayofweek和dt.strftime()

现在让我们讨论每种方法以及它们如何用于从Pandas中获取日期的天数。

方法1:使用dt.dayofweek

我们可以使用dt.dayofweek属性将给定的日期转换为其特定的星期几,然后通过创建一个手动映射将其转换为字符串形式。

步骤

  • 导入必要的库

  • 使用pd.date_range()函数创建一个日期范围对象,提供开始和结束日期作为参数。

  • 使用日期范围对象创建一个DataFrame

  • 在DataFrame中添加一个新列来存储星期几的天数

  • 使用dt.dayofweek属性从存储在DataFrame中的每个日期中获取星期几的天数

  • 使用map()方法将星期几的天数映射到其名称,提供一个字典作为参数。

  • 打印结果的DataFrame。

步骤1 – 创建一个日期范围

dates = pd.date_range(start='2022-01-01', end='2022-01-07')

步骤2 – 使用日期范围创建一个数据帧

df = pd.DataFrame({'date': dates})

步骤3 – 添加一列显示星期几

df['day_of_week'] = df['date'].dt.dayofweek

步骤4 – 将星期几的数字映射为对应的名称

df['day_of_week'] = df['day_of_week'].map({
    0: 'Monday',
    1: 'Tuesday',
    2: 'Wednesday',
    3: 'Thursday',
    4: 'Friday',
    5: 'Saturday',
    6: 'Sunday'
})

步骤5 – 打印输出

print(df.head())

示例

import pandas as pd

# create a date range
dates = pd.date_range(start='2022-01-01', end='2022-01-07')

# create a DataFrame with the dates
df = pd.DataFrame({'date': dates})

# add a column with the day of the week
df['day_of_week'] = df['date'].dt.dayofweek

# map the day of the week number to its name
df['day_of_week'] = df['day_of_week'].map({
    0: 'Monday',
    1: 'Tuesday',
    2: 'Wednesday',
    3: 'Thursday',
    4: 'Friday',
    5: 'Saturday',
    6: 'Sunday'
})

# print the output
print(df.head())

输出

date      day_of_week
0 2022-01-01    Saturday
1 2022-01-02      Sunday
2 2022-01-03      Monday
3 2022-01-04     Tuesday
4 2022-01-05   Wednesday

方法2:使用pd.to_datetime()和dt.day_name()

我们可以使用dt.datetime()先将一个数据框的日期转换为日期时间对象,然后从该日期时间对象获取星期几。

步骤

  • 导入pandas库

  • 创建一个包含日期字符串的数据框

  • 使用pd.to_datetime()函数将日期字符串转换为相应的日期时间对象

  • 添加一个新列到数据框中来存储星期几

  • 使用dt.day_name()属性从日期时间对象中获取相应的星期几的名称

  • 打印结果数据框以获取输出。

示例

# Import the pandas library
import pandas as pd

# Create a DataFrame with a single date string
date_obj = pd.DataFrame({'Date': ['2023-04-10']})

# Convert the date string to a datetime object using the to_datetime() function
date_obj['Date'] = pd.to_datetime(date_obj['Date'])

# Add a new column to the DataFrame to store the day of the week
date_obj['Day'] = date_obj['Date'].dt.day_name()

# Print the resulting DataFrame
print(date_obj)

输出

Date     Day
0 2023-04-10  Monday

方法3:使用pd.to_datetime()和dt.day_name()方法处理多个日期字符串

我们可以使用dt.datetime()先将DataFrame中的日期转换为日期时间对象,然后从该日期时间对象中获取星期几。

步骤

  • 导入pandas库

  • 创建一个包含多个日期字符串的DataFrame

  • 使用pd.to_datetime()函数将日期字符串转换为对应的日期时间对象

  • 在DataFrame中添加一个新的列来存储星期几的信息

  • 使用dt.day_name()属性从DataFrame中的每个日期时间对象中提取星期几的名称

  • 打印输出结果的DataFrame

示例

# Import the pandas library
import pandas as pd

# Create a DataFrame with multiple date strings
dates = pd.DataFrame({'Date':['2019-03-07', '2020-03-07',
   '2021-03-07', '2022-03-07',
   '2023-03-07']})

# Convert the date strings to datetime objects using the pd.to_datetime() function
dates['Date'] = pd.to_datetime(dates['Date'])

# Add a new column to the DataFrame to store the day of the week
dates['Day'] = dates['Date'].dt.day_name()

# Print the resulting DataFrame 
print(dates)

输出

Date       Day
0 2019-03-07  Thursday
1 2020-03-07  Saturday
2 2021-03-07    Sunday
3 2022-03-07    Monday
4 2023-03-07   Tuesday

方法4:在多个日期字符串上使用pd.dayofweek和dt.strftime()

在这种方法中,我们使用dayofweek属性来获取日期字符串的星期几编号,然后使用strftime()函数将星期几的名称转化为字符串并进行缩写。

  • 导入pandas库

  • 创建一个包含单个日期字符串的DataFrame

  • 将日期字符串转化为日期时间对象

  • 为DataFrame添加一列,以数值形式存储星期几

  • 为DataFrame添加一列,以缩写形式存储星期几的名称

  • 打印结果DataFrame

示例

import pandas as pd

# Create a DataFrame with a single date string
date_obj = pd.DataFrame({'Date':['2023-04-10']})

# Convert the date string to a datetime object
date_obj['Date'] = pd.to_datetime(date_obj['Date'])

# Add a new column to the DataFrame to store the day of the week as a number
date_obj['DayNumber'] = date_obj['Date'].dt.dayofweek

# Add a new column to the DataFrame to store the abbreviated name of the day of the week
date_obj['DayOfWeek'] = date_obj['Date'].dt.strftime('%a')

# Print the resulting Dataframe
print(date_obj)

输出

Date  DayNumber DayOfWeek
0 2023-04-10          0       Mon

结论

通过使用这些方法,我们还可以轻松地向DataFrame中添加新列,以存储星期几和更多日期相关的信息。

每种方法或函数都有其自己的优缺点。根据您想要的表达式的复杂性以及您个人偏好编写代码的方式,您可以选择您想要的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记