在 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 - 创建具有日期范围的 Dataframe
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 # 创建日期范围 dates = pd.date_range(start='2022-01-01', end='2022-01-07') # 创建包含日期的 DataFrame df = pd.DataFrame({'date': dates}) # 添加包含星期几的列 df['day_of_week'] = df['date'].dt.dayofweek # 将星期几映射到其名称 df['day_of_week'] = df['day_of_week'].map({ 0: 'Monday', 1: 'Tuesday', 2: 'Wednesday', 3: 'Thursday', 4: 'Friday', 5: 'Saturday', 6: 'Sunday' }) # 打印输出 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() 首先将数据框日期转换为 date_time 对象,然后从该 date_time 对象获取星期几。
算法
导入 pandas 库
使用日期字符串创建数据框
使用 pd.to_datetime() 函数将日期字符串转换为相应的 datetime 对象
向数据框添加新列以存储星期几
使用 dt.day_name() 属性从 datetime 对象获取星期几的相应名称
打印生成的数据框以获取输出。
示例
# 导入 pandas 库 import pandas as pd # 创建一个包含单个日期字符串的 DataFrame date_obj = pd.DataFrame({'Date': ['2023-04-10']}) # 使用 to_datetime() 函数将日期字符串转换为 datetime 对象 date_obj['Date'] = pd.to_datetime(date_obj['Date']) # 向 DataFrame 添加一个新列以存储星期几 date_obj['Day'] = date_obj['Date'].dt.day_name() # 打印生成的 DataFrame print(date_obj)
输出
Date Day 0 2023-04-10 星期一
方法 3:对多个日期字符串使用 pd.to_datetime() 和 dt.day_name()
我们可以使用 dt.datetime() 首先将数据框日期转换为 date_time 对象,然后从该 date_time 对象中获取星期几。
算法
导入 pandas 库
创建一个以多个日期字符串作为输入日期的 DataFrame。
使用 pd.to_datetime() 函数将日期字符串转换为其对应的 datetime 对象
向 DataFrame 添加一个新列来存储星期几
使用 dt.day_name() 属性提取从 DataFrame 中的每个日期时间对象中获取星期几的名称。
打印生成的 DataFrame 以获取输出。
示例
# 导入 pandas 库 import pandas as pd # 创建包含多个日期字符串的 DataFrame dates = pd.DataFrame({'Date':['2019-03-07', '2020-03-07', '2021-03-07', '2022-03-07', '2023-03-07']}) # 使用 pd.to_datetime() 函数将日期字符串转换为日期时间对象 dates['Date'] = pd.to_datetime(dates['Date']) # 向 DataFrame 添加一个新列以存储星期几 dates['Day'] = dates['Date'].dt.day_name() # 打印生成的 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
将日期字符串转换为 datetime 对象
向 DataFrame 添加新列以将星期几存储为数值
向 DataFrame 添加新列以存储星期几的缩写名称
打印结果DataFrame
示例
import pandas as pd # 创建一个包含单个日期字符串的 DataFrame date_obj = pd.DataFrame({'Date':['2023-04-10']}) # 将日期字符串转换为 datetime 对象 date_obj['Date'] = pd.to_datetime(date_obj['Date']) # 向 DataFrame 添加一个新列,以数字形式存储星期几 date_obj['DayNumber'] = date_obj['Date'].dt.dayofweek # 向 DataFrame 添加一个新列,以存储星期几的缩写名称 date_obj['DayOfWeek'] = date_obj['Date'].dt.strftime('%a') # 打印结果数据框 print(date_obj)
输出
Date DayNumber DayOfWeek 0 2023-04-10 0 Mon
结论
通过使用这些方法,我们还可以轻松地向 DataFrame 添加新列,以在该 DataFrame 中存储星期几和更多与日期相关的信息。
根据所使用的方法或函数,每种方法都有自己的优点和缺点。您可以根据想要的表达式的复杂性和编写代码的个人偏好来选择所需的方法。