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

Pandas中DataFrame DateTime列去重转列表变整数的问题及解决

问题分析与解决方法

这个问题我之前也碰到过,其实核心原因和pandas、numpy对datetime类型的底层存储逻辑有关:

为什么会得到整数而不是datetime类型?

pandas里的datetime列本质上是用numpy.datetime64类型存储的,这种类型底层是用整数来表示时间(单位通常是纳秒)。当你调用unique()后得到的是numpy的datetime64数组,再用tolist()转换时,numpy会把这些datetime64元素直接转成对应的纳秒级时间戳整数,而不是Python原生的datetime.datetime对象——这就是你看到一串大整数的原因。另外要确认你的DateTime列确实已经被正确解析为datetime类型,如果还是字符串(object类型),那unique().tolist()应该返回字符串列表,但显然你的情况已经是datetime64类型了。

解决方法

这里给你几个实用的方案,按需选择:

方案1:转换为Python原生datetime对象列表

先确保DateTime列是datetime类型(如果还没解析的话先转换),然后逐个把numpy datetime64元素转成Python datetime:

# 第一步:确保列是datetime类型(如果读取数据时没自动解析的话)
import pandas as pd
signal_data['DateTime'] = pd.to_datetime(signal_data['DateTime'])

# 第二步:提取唯一值并转为Python datetime列表
unique_dates = [dt.to_pydatetime() for dt in signal_data['DateTime'].unique()]

方案2:用pandas的内置方法直接转换

pandas的dt访问器可以帮我们快速转换:

unique_dates = signal_data['DateTime'].dt.to_pydatetime().unique().tolist()

方案3:如果已经拿到了整数时间戳,再转回去

如果已经得到了那串整数列表,也可以把它们转成datetime类型:

# 假设int_dates是你得到的整数列表
int_dates = [1459469820000000000, 1459516620000000000, ...]
# 转成pandas datetime对象
unique_dates = pd.to_datetime(int_dates)
# 或者转成Python原生datetime
from datetime import datetime
unique_dates = [datetime.fromtimestamp(ts / 1e9) for ts in int_dates]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:26:15