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

如何为pandas timedelta类型Series批量提取days属性?

问题解答

为什么会出现KeyError: 12?

你可能没意识到——这个错误确实和索引的“字典式”查找逻辑有关!Pandas的Series本质是一个带标签索引的有序集合,当你写age[i]时,它是在按索引标签查找元素,而非按位置顺序。如果你的Series索引不是连续的0、1、2……这类整数(比如中间有缺失的索引值,或是索引为其他类型),当循环到i=12时,你的Series里根本没有标签为12的元素,自然就抛出了KeyError。

举个直观的例子:如果你的Series索引是[0,1,2,...,11,13,14,...],那当循环到i=12时,age[12]找不到对应的元素,就会触发这个错误。

如何批量提取.days属性?

推荐两种方法,优先选择第一种(Pandas原生向量化操作,效率最高):

  1. 使用dt访问器(最推荐)
    Pandas专为Timedelta类型的Series提供了dt访问器,能直接批量提取属性,一行代码就能搞定:
age_new = ages.dt.days

得到的age_new是整数类型的Series,完全满足需求,而且比循环高效得多,数据量越大优势越明显。

  1. 如果一定要用循环,按位置访问元素
    要是你坚持用循环实现,记得按位置而非索引标签访问元素,用iloc方法:
age_new = []
for i in range(len(ages)):
    age_new.append(ages.iloc[i].days)

或者用更简洁的列表推导式:

age_new = [x.days for x in ages]

这两种方式都会按顺序遍历Series的每一个元素,不受索引标签的影响,也就不会出现KeyError了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:26