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

Pandas转换时间后获取微秒报错:'Series'对象无'microsecond'属性

解决pandas Series调用microsecond报错的问题

嘿,我来帮你搞定这个小问题!你遇到的报错原因很明确:当你用pd.to_datetime转换整个列之后,得到的x是一个pandas Datetime Series(也就是一组datetime对象的序列),而单个datetime对象的.microsecond属性不能直接用在Series上——Series需要用专门的dt访问器来获取时间相关的属性。

下面是具体的解决方案,分步骤来:

1. 正确提取微秒数值

用dt.microsecond替代直接调用.microsecond,就能得到每个时间对应的微秒整数:

# 提取微秒整数序列
microseconds = x.dt.microsecond
# 输出会是类似:0    3, 1    3, 2    7... 的Series

2. 格式化为三位字符串(如003、007)

如果你需要像例子里那样带前导零的三位字符串格式,可以把整数转成字符串后用str.zfill(3)补零:

formatted_micro = x.dt.microsecond.astype(str).str.zfill(3)

3. 转换成目标数组

最后如果要生成你需要的数组,只需要调用.to_numpy()或者.values即可:

target_array = formatted_micro.to_numpy()
# 输出就是:['003' '003' '007' '007' '011' '011' '015' '015']

完整示例代码

结合你的数据,完整的可运行代码如下:

import pandas as pd

# 模拟你的时间数据
df = pd.DataFrame({
    'Time': [
        '1900-01-01 00:00:00.003',
        '1900-01-01 00:00:00.003',
        '1900-01-01 00:00:00.007',
        '1900-01-01 00:00:00.007',
        '1900-01-01 00:00:00.011',
        '1900-01-01 00:00:00.011',
        '1900-01-01 00:00:00.015',
        '1900-01-01 00:00:00.015'
    ]
})

# 转换为datetime类型(这里不需要指定format,pandas能自动识别标准格式)
x = pd.to_datetime(df['Time'])

# 生成目标数组
result_array = x.dt.microsecond.astype(str).str.zfill(3).to_numpy()
print(result_array)

另外提个小细节:你的时间字符串是完整的ISO格式(包含日期+时间+微秒),所以pd.to_datetime可以自动解析,不需要手动指定format='%H:%M:%S.%f'——这个format参数更适合只有时分秒微秒的字符串哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:47:35