我的数据有一个像这样的datetime
索引2016-11-05 23:40:00
.
我想将日期时间元素提取到年、月和日的三个新列中。我使用以下
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
任何帮助,不胜感激。
我认为浮点数的原因缺少值,所以如果使用熊猫 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')
只需使用 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's 则使用 errors 参数:
df['year'] = df.index.year.astype(int, errors='ignore')
这将返回具有空索引的列的 nans
在 int 上转换它
import datetime as dt
df['year'] = int(df.index.year)
df['month'] = int(df.index.month)
df['day'] = int(df.index.day)
或者,如果你有很多列,最简单的可能是毕竟用于构造数据帧的代码:
df = df.astype(int)