将Pandas TimeDelta转换为整数

7
假设我有一个包含TimeDelta数据的Pandas Series。实际上,它是通过将DateTimeIndex与其自身的移位版本之间的差异进行计算而生成的,从而给出连续时间戳之间的增量。
它看起来像这样:
timestamp
2015-02-01 00:00:04   00:00:04
2015-02-01 00:00:08   00:00:04
2015-02-01 00:00:12   00:00:04
....
Name: timestamp, dtype: timedelta64[ns]

这些值显然是numpy.timedelta64类型的,但我需要将它们转换为秒。

已经有类似的问题与此相关,但我还没有看到任何处理Pandas 0.16.1的答案。

我尝试过:

ts.apply(lambda x: x.seconds)

出现错误:

AttributeError: 'numpy.timedelta64'对象没有属性'seconds'

尝试了以下方法:

numpy.int64(ts)

但是这给了我一个数组。现在我知道我可以将其转换回Series,但是否没有另一种方法可以在一个Pandas调用或映射函数中完成此操作?


1
你正在运行0.15.0或更高版本吗?如果是,ts.dt.second不应该可以工作吗? - EdChum
为什么是的。它确实如此。(正在运行0.16.1,我将在文档中查找) - Will
1个回答

7
以下方法适用于我:
In [24]:

t="""index,timestamp
2015-02-01 00:00:04,00:00:04
2015-02-01 00:00:08,00:00:04
2015-02-01 00:00:12,00:00:04"""
s = pd.read_csv(io.StringIO(t),parse_dates=[0,1], squeeze=True, index_col=[0])
In [26]:

s.dt.second
Out[26]:
index
2015-02-01 00:00:04    4
2015-02-01 00:00:08    4
2015-02-01 00:00:12    4
dtype: int64

datetime数据类型的值有一个dt访问器,您可以通过它来访问秒属性。


如果timedelta在索引中怎么办? - Soren
1
@Sören 你应该可以直接使用 df.index.seconds ,所以不需要 .dt - EdChum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接