python-从numpy datetime64中获取年,月或日
我有一个datetime64类型的数组:
dates = np.datetime64(['2010-10-17', '2011-05-13', "2012-01-15"])
除了遍历每个元素以获得年的np.array之外,还有没有更好的方法:
years = f(dates)
#output:
array([2010, 2011, 2012], dtype=int8) #or dtype = string
我正在使用稳定的numpy版本1.6.2。
9个解决方案
36 votes
由于日期时间在numpy中不稳定,因此我将使用pandas:
In [52]: import pandas as pd
In [53]: dates = pd.DatetimeIndex(['2010-10-17', '2011-05-13', "2012-01-15"])
In [54]: dates.year
Out[54]: array([2010, 2011, 2012], dtype=int32)
熊猫内部使用numpy datetime,但似乎避免了numpy到目前为止的不足。
bmu answered 2020-01-29T09:00:00Z
24 votes
我发现以下技巧使速度提高了2倍至4倍(与上述熊猫方法相比)(即pd.DatetimeIndex(dates).year等)。 我发现[dt.year for dt in dates.astype(object)]的速度类似于pandas方法。 这些技巧也可以直接应用于任何形