原始记录具有以下格式,即日期信息以字符串格式存储
records[‘start_date’].unique()
array([nan, '6/3/2012', '10/20/2013'], dtype=object)
根据该论坛的建议,我使用以下代码将其传输到datetime
Records[‘start_date’] = pd.to_datatime(records[‘start_date’], format =’%m/%d/%Y’)
传输的数组具有以下摘要
array(['NaT', '2012-06-03T00:00:00.000000000',
'2013-10-20T00:00:00.000000000',], dtype='datetime64[ns]')
我想使传输的日期时间格式更精简,仅保留日期而不保留那些分钟/秒信息。具体来说,我想要这样的格式
array(['NaT', '2012-06-03,
'2013-10-20',], dtype='datetime64[ns]')
如何实现该目标?谢谢
答案 0 :(得分:1)
我想使转移日期时间格式更精简,并且 仅保留日期,而不保留这些分钟/秒的信息。
这是不正确的。 np.datetime64
本质上是int64
上的一个薄包装。因此,这种格式比字符串更有效地存储日期(包括时间等)。不要被显示所迷惑:'2012-06-03T00:00:00.000000000'
只是底层整数的文本表示。这里有一些证据:
import datetime, sys, numpy as np
now = datetime.datetime.now()
x_date = sys.getsizeof(np.datetime64(now)) # 40
x_int = sys.getsizeof(np.datetime64(now).astype(int)) # 28
y = sys.getsizeof('10/20/2013') # 59
现在,如果您主要关注 display ,那么您可以在Pandas中将系列转换为object
dtype系列中保存的字符串:
records['start_date'] = records['start_date'].dt.strftime('%Y-%m-%d')
一种替代方法是使用一系列datetime.date
对象:
records['start_date'] = records['start_date'].dt.date
请注意,进一步的操作将导致内存和性能低下,第一种选择更是如此。