You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将DataFrame的年、月、日列转为日期戳?

把年/月/日列合并为日期戳的正确实现

嘿,我看你想把分散的年份、月份、日期三列合并成一个统一的日期戳列,刚好Pandas有非常方便的工具来做这个,先帮你修正代码里的小问题,再给出两种靠谱的实现方法:

1. 先修正列选择的语法错误

你在筛选df_tx_all列的时候,写法有点小问题:df_tx_all[col_tx_year, col_tx_month, ...] 不符合Pandas的语法,多列筛选需要用双层方括号(把列名放进一个列表里),修正后应该是这样:

df_tx_all = df_tx_all[[
    col_tx_year, col_tx_month, col_tx_day, 
    col_tx_customer_id, col_tx_distributor_id, 
    col_tx_product_family, col_tx_gross_sales_quantity, 
    col_tx_gross_sales_valuei, col_tx_net_sales_value, 
    col_tx_discount_values
]]

2. 两种合并成日期戳的方法

方法一:直接用Pandas的自动识别(最简便)

pd.to_datetime()可以直接接收包含年、月、日的DataFrame子集,自动帮你组合成日期戳,这是最省心的方式:

# 直接传入年、月、日三列组成的DataFrame,生成time_stamp列
df_tx_all["time_stamp"] = pd.to_datetime(df_tx_all[[col_tx_year, col_tx_month, col_tx_day]])

这个方法要求你的年、月、日列是数值型(比如年份是2023,月份是5这种),或者是标准格式的字符串,Pandas会自动识别。

方法二:手动拼接字符串后转换(适合自定义格式场景)

如果你的列是不规则的字符串(比如月份是"5"而不是"05"),或者需要指定特定的日期格式,可以先拼接成标准日期字符串再转换:

# 拼接成YYYY-MM-DD格式的字符串,用str.zfill(2)确保月份和日期是两位数
df_tx_all["date_str"] = (
    df_tx_all[col_tx_year].astype(str) + "-" +
    df_tx_all[col_tx_month].astype(str).str.zfill(2) + "-" +
    df_tx_all[col_tx_day].astype(str).str.zfill(2)
)

# 转换为日期戳,指定格式让Pandas更准确识别
df_tx_all["time_stamp"] = pd.to_datetime(df_tx_all["date_str"], format="%Y-%m-%d")

# 不需要临时列的话可以删掉
df_tx_all = df_tx_all.drop("date_str", axis=1)

3. 几个需要注意的小细节

  • 记得保持变量名一致:你代码里写了df["time_stamp"],但前面操作的是df_tx_all,这里要统一,不然会报错哦。
  • 处理无效值:如果你的年/月/日列有缺失或者无效数据(比如月份是13),可以用errors参数处理:pd.to_datetime(..., errors="coerce")会把无效值转为NaT(空日期),errors="raise"则会直接抛出错误提醒你清理数据。

内容的提问来源于stack exchange,提问作者Sim re

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:28:00