如何将numpy和pandas datetime对象转换为数字?

使用时间戳,日期时间并不总是很方便。一些程序要求简单的数字输入。当将pandas.stamps收集在pandas.Series中时,可以很容易地将它们转换为数值并返回。


import pandas as pd

from pandas import Timestamp


age = [30, 31, 31]

date = [Timestamp('2001-02-10 00:01:00'),

 Timestamp('2001-11-12 00:01:00'),

 Timestamp('2002-02-27 00:01:00')]


df = pd.DataFrame({'age': age, 'date': date})


pd.to_numeric(df.date)

0     981763260000000000

1    1005523260000000000

2    1014768060000000000

尽管将单个熊猫或numpy datetime对象或一个timedelta转换为数字不能那样工作。


pd.to_numeric(Timestamp('2001-02-10 00:01:00'))

pd.to_numeric([Timestamp('2001-02-10 00:01:00')])

pd.to_numeric([numpy.datetime64('2001-02-10T00:01:00.000000000')])

pd.to_numeric([pd.Timedelta('365 days')])

# all give:

#> TypeError: Invalid object type at position 0

将这些类型转换为数字类型的正确方法是什么?


撒科打诨
浏览 1086回答 3
3回答

翻阅古今

只需使用ts.valuetimestamp的属性ts:ts = Timestamp('2001-02-10 00:01:00')print(ts.value)#981763260000000000

不负相思意

将timedelta转换为数值:x = pd.Timedelta('365 days')x#Timedelta('365 days 00:00:00')type(x)#pandas._libs.tslibs.timedeltas.Timedeltay = x / np.timedelta64(1, 'D')y#365.0type(y)#float

DIEA

尝试使用pandas.Timestamp类的方法:>>> Timestamp('2001-02-10 00:01:00').timestamp()981763260.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python