在 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 # 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() 首先将 DataFrame 日期转换为 datetime 对象,然后从该 datetime 对象获取星期几。
算法
导入 pandas 库
创建一个包含日期字符串的 DataFrame
使用 pd.to_datetime() 函数将日期字符串转换为相应的 datetime 对象
向 DataFrame 添加一个新列来存储星期几。
使用 dt.day_name() 属性从 datetime 对象获取相应的星期几名称
打印生成的 DataFrame 以获取输出。
示例
# 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 日期转换为 datetime 对象,然后从该 datetime 对象获取星期几。
算法
导入 pandas 库
创建一个 DataFrame,其中包含多个日期字符串作为输入日期。
使用 pd.to_datetime() 函数将日期字符串转换为相应的 datetime 对象
向 DataFrame 添加一个新列来存储星期几。
使用 dt.day_name() 属性从 DataFrame 中的每个 datetime 对象提取星期几的名称。
打印生成的 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
将日期字符串转换为 datetime 对象
向 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 添加新列,以存储星期几以及该 DataFrame 中更多与日期相关的信息。
每种方法都有其自身的优点和缺点,这取决于所使用的方法或函数。您可以根据所需表达式的复杂性和编写代码的个人喜好来选择所需的方法。