我有一个麻木的日期时间。
numpy.datetime64('2010-06-01T00:00:00.000000000')
我怎样才能得到这样的东西:
numpy.datetime64('2010-06-01')
或者
'2010-06-01'
基本上,我想删除小时及以后的时间戳。
原文由 maximusdooku 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个麻木的日期时间。
numpy.datetime64('2010-06-01T00:00:00.000000000')
我怎样才能得到这样的东西:
numpy.datetime64('2010-06-01')
或者
'2010-06-01'
基本上,我想删除小时及以后的时间戳。
原文由 maximusdooku 发布,翻译遵循 CC BY-SA 4.0 许可协议
astype
有效:
In [208]: d1 = numpy.datetime64('2010-06-01T00:00:00.000000000')
In [210]: d1.astype('datetime64[D]')
Out[210]: numpy.datetime64('2010-06-01')
对于打印字符串:
In [211]: str(d1.astype('datetime64[D]'))
Out[211]: '2010-06-01'
或编辑完整的字符串
In [216]: str(d1)
Out[216]: '2010-06-01T00:00:00.000000000'
In [217]: str(d1).split('T')[0]
Out[217]: '2010-06-01'
(早先的想法)
如果你从数组中取出日期,你会得到一个 datetime
对象。可以获取日期等属性:
In [198]: d=np.array('2018-03-12',dtype='datetime64[D]')
In [199]: d
Out[199]: array('2018-03-12', dtype='datetime64[D]')
In [200]: d.item()
Out[200]: datetime.date(2018, 3, 12)
In [201]: dd=d.item()
In [202]: dd.day
Out[202]: 12
In [203]: dd.month
Out[203]: 3
In [204]: dd.year
Out[204]: 2018
简单地索引数组是不够的:
In [205]: d[()]
Out[205]: numpy.datetime64('2018-03-12')
In [206]: d[()].item()
Out[206]: datetime.date(2018, 3, 12)
从建议的重复链接中,转换为 object
还会创建 datetime
对象:
In [207]: d.astype(object)
Out[207]: array(datetime.date(2018, 3, 12), dtype=object)
对于具有微秒的较长对象,item 没有那么有用
In [213]: d1.item()
Out[213]: 1275350400000000000
In [214]: d1.astype('datetime64[s]').item()
Out[214]: datetime.datetime(2010, 6, 1, 0, 0)
原文由 hpaulj 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答983 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
我建议使用
pandas
来转换你的numpy.datetime
:回报:
如果您有多个要转换的字符串,这也可以工作:
回报: