将日期时间 ns 转换为每日格式
Convert datetime ns to daily format
我的数据框中有一列采用这种格式:
2013-01-25 00:00:00+00:00
非空 datetime64[ns, UTC]
我想将其转换为每日格式,如下所示:
2013-01-25
我试过这种方法,但一直收到错误消息:
df['date_column'].date()
AttributeError: 'Series' 对象没有属性 'date'
错误信息我不是很清楚,因为根据df.info()
,对象应该是一个日期时间对象
任何人都可以建议如何执行此操作的方法吗?
简而言之:不建议转换为 date
对象,因为那样你会失去很多检查 date
的功能。只 dt.floor(..)
[pandas-doc], or dt.normalize(..)
[pandas-doc].
可能会更好
可以用pd.to_datetime(..)
[pandas-doc]转换一系列字符串,例如:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00']))
0 2013-01-25
dtype: datetime64[ns]
我们稍后可以将其转换为 date
个对象 .dt.date
[pandas-doc]:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.date
0 2013-01-25
dtype: object
请注意 date
不是 原生 Numpy 类型,因此它将使用 Python date(..)
对象。这样做的一个缺点是您不能再处理对象是 datetime-like 个对象。所以 Series
或多或少失去了很多功能。
今天只 dt.floor(..)
[pandas-doc] 可能会更好,因此将其保留为 datetime64[ns]
对象:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.floor(freq='d')
0 2013-01-25
dtype: datetime64[ns]
我们也可以使用dt.normalize(..)
[pandas-doc]。这只是将时间组件设置为 0:00:00
,并且不影响时区:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.normalize()
0 2013-01-25
dtype: datetime64[ns]
我的数据框中有一列采用这种格式:
2013-01-25 00:00:00+00:00
非空 datetime64[ns, UTC]
我想将其转换为每日格式,如下所示:
2013-01-25
我试过这种方法,但一直收到错误消息:
df['date_column'].date()
AttributeError: 'Series' 对象没有属性 'date'
错误信息我不是很清楚,因为根据df.info()
,对象应该是一个日期时间对象任何人都可以建议如何执行此操作的方法吗?
简而言之:不建议转换为 date
对象,因为那样你会失去很多检查 date
的功能。只 dt.floor(..)
[pandas-doc], or dt.normalize(..)
[pandas-doc].
可以用pd.to_datetime(..)
[pandas-doc]转换一系列字符串,例如:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00']))
0 2013-01-25
dtype: datetime64[ns]
我们稍后可以将其转换为 date
个对象 .dt.date
[pandas-doc]:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.date
0 2013-01-25
dtype: object
请注意 date
不是 原生 Numpy 类型,因此它将使用 Python date(..)
对象。这样做的一个缺点是您不能再处理对象是 datetime-like 个对象。所以 Series
或多或少失去了很多功能。
今天只 dt.floor(..)
[pandas-doc] 可能会更好,因此将其保留为 datetime64[ns]
对象:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.floor(freq='d')
0 2013-01-25
dtype: datetime64[ns]
我们也可以使用dt.normalize(..)
[pandas-doc]。这只是将时间组件设置为 0:00:00
,并且不影响时区:
>>> pd.to_datetime(pd.Series(['2013-01-25 00:00:00+00:00'])).dt.normalize()
0 2013-01-25
dtype: datetime64[ns]