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

如何避免Pandas to_dict()将时间戳转换为字符串?

解决DataFrame to_dict()转换Unix时间戳为日期字符串的问题

pandas的to_dict()方法会自动将datetime类型的字段格式化为yyyy-mm-dd字符串,要保留原始Unix时间戳数值,可采用以下几种方案:

方案1:读取数据时强制保留数值类型

在pd.read_sql_query中通过dtype参数指定date列的类型,避免pandas自动将其解析为datetime对象:

df_results = pd.read_sql_query(
    sql_query_str, 
    _engine, 
    dtype={'date': 'int64'}  # 根据实际时间戳精度调整类型,如int32/float64
)
return_object["results"] = df_results.to_dict(orient='records')
# 输出的JSON中"date"会保留原始Unix时间戳数值

方案2:将datetime列转回Unix时间戳

如果数据已被解析为datetime类型,可手动转换回对应的Unix时间戳(根据原始精度选择秒/毫秒):

df_results = pd.read_sql_query(sql_query_str, _engine)
# 转换为秒级时间戳(若原始是毫秒则移除//10**9)
df_results['date'] = df_results['date'].astype(int) // 10**9
return_object["results"] = df_results.to_dict(orient='records')

方案3:使用to_json+json.loads(你已验证的方法)

利用to_json默认将datetime转为Unix时间戳的特性,再转回字典格式,还可通过date_unit参数指定时间戳精度:

# date_unit可选's'(秒)、'ms'(毫秒)、'us'(微秒)、'ns'(纳秒)
json_str = df_results.to_json(orient='records', date_unit='s')
return_object["results"] = json.loads(json_str)
# 输出的JSON中"date"为对应精度的Unix时间戳数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:15:44