如何根据年、月、日计算星期几并添加为数据集列?
通过年、月、日计算星期几的实现方案
Python 代码实现(适配表格数据集)
如果你的数据集是表格形式(比如Excel/CSV导入的Pandas DataFrame),以下代码可以直接计算星期几,同时自动处理无效日期:
import pandas as pd from datetime import datetime # 替换为你的实际数据集读取方式 df = pd.read_csv("your_data.csv") # 或从Excel读取:pd.read_excel("your_data.xlsx") # 定义计算星期几的函数 def calculate_weekday(year, month, day): try: # 构造日期对象 date_obj = datetime(year, month, day) # 映射中文星期名称,按需调整格式 weekday_map = { 0: "星期一", 1: "星期二", 2: "星期三", 3: "星期四", 4: "星期五", 5: "星期六", 6: "星期日" } return weekday_map[date_obj.weekday()] except ValueError: return "无效日期" # 给数据集新增「星期几」列 df["星期几"] = df.apply(lambda row: calculate_weekday(row["年"], row["月"], row["日"]), axis=1) # 查看结果 print(df.head())
核心说明
- 规避手动公式错误:无需自己实现蔡勒公式这类复杂逻辑,
datetime是Python官方提供的日期处理工具,准确性有保障 - 自动校验日期有效性:如果数据中存在「2月30日」「13月15日」这类无效日期,函数会返回「无效日期」,避免程序崩溃
- 星期格式灵活调整:
date_obj.weekday():返回0(周一)到6(周日)的数字date_obj.isoweekday():返回1(周一)到7(周日)的数字- 上述代码用字典映射成中文名称,可按需修改为数字或英文
非Pandas场景的适配
如果你的数据是普通列表/元组,可参考以下逻辑:
from datetime import datetime # 示例数据列表 date_list = [(2024, 3, 1), (2024, 2, 29), (2024, 13, 1)] weekday_map = {0: "周一", 1: "周二", 2: "周三", 3: "周四", 4: "周五", 5: "周六", 6: "周日"} for year, month, day in date_list: try: dt = datetime(year, month, day) print(f"{year}-{month}-{day}:{weekday_map[dt.weekday()]}") except ValueError: print(f"{year}-{month}-{day}:无效日期")
内容的提问来源于stack exchange,提问作者Parth Khandenath
相关产品推荐
相关产品推荐

