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

如何在Python中将Pandas DataFrame转换为换行分隔JSON时保留原时间戳格式

如何在Pandas中将DataFrame转为换行分隔JSON时保留原始时间戳格式

你遇到的问题是Pandas的to_json方法默认会对datetime类型做格式转换——要么转成带T和Z的ISO标准格式,要么转成时间戳数字,而你需要保留原始的YYYY-MM-DD HH:MM:SS样式。下面是可行的解决方案:

核心思路

先将DataFrame中的datetime类型列转换为字符串格式(保持你想要的时间戳样式),再导出为换行分隔JSON,这样就能避免Pandas自动修改时间格式。

具体步骤&代码示例

  1. 确保你的时间戳列是datetime类型(如果还不是,先转换):
import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'timestamp': pd.to_datetime(['2020-08-17 07:38:02']),
    'data': ['sample']
})
  1. 将datetime列转为字符串(直接用astype(str)就能保留YYYY-MM-DD HH:MM:SS格式):
df['timestamp'] = df['timestamp'].astype(str)
  1. 导出为换行分隔JSON:
df.to_json("C:/myfolder/myfile.json", orient="records", lines=True)

执行后,导出的JSON内容会是:

{"timestamp":"2020-08-17 07:38:02","data":"sample"}

完全符合你的期望结果。

批量处理多个datetime列

如果你的DataFrame有多个datetime列,可以用apply批量转换,不用逐个处理:

# 遍历所有列,将datetime类型列转为字符串
df = df.apply(lambda col: col.astype(str) if pd.api.types.is_datetime64_any_dtype(col) else col)

# 再导出JSON
df.to_json("C:/myfolder/myfile.json", orient="records", lines=True)

为什么之前的尝试没成功?

  • 尝试1:使用date_format='iso'明确指定了输出ISO标准的时间格式,所以会得到2020-08-17T07:38:02Z;
  • 尝试2:没有指定日期处理参数,Pandas默认会将datetime类型转为毫秒级时间戳数字,也就是你看到的1597649882000。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:22:47