Python:将日期时间提取到年,月和日的结果以浮点数

时间:2019-05-29 09:08:21

标签: python pandas datetime

我的数据具有datetime这样的2016-11-05 23:40:00索引。
我想将datetime元素提取到年,月和日的三个新列中。我使用以下

import datetime as dt
df['year'] = df.index.year
df['month'] = df.index.month
df['day'] = df.index.day

但是闹事浮空

year    month   day
2016.0  11.0    5.0

我想要

year    month   day
2016    11      5

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

只需使用astype

import datetime as dt
df['year'] = df.index.year.astype(int)
df['month'] = df.index.month.astype(int)
df['day'] = df.index.day.astype(int)

如果有Nan,则使用errors参数:

df['year'] = df.index.year.astype(int, errors='ignore')

这将为索引为空的列返回nans

答案 1 :(得分:3)

将其转换为int

import datetime as dt
df['year'] = int(df.index.year)
df['month'] = int(df.index.month)
df['day'] = int(df.index.day)

答案 2 :(得分:3)

我认为浮动的原因是缺少值,因此如果可以使用熊猫0.24+,请使用Nullable Integer Data Type

df['year'] = df.index.year.astype('Int64')
df['month'] = df.index.month.astype('Int64')
df['day'] = df.index.day.astype('Int64')

答案 3 :(得分:0)

或者,如果您有很多列,最简单的方法可能就是构建数据帧的所有代码:

df = df.astype(int)