我的数据具有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
感谢您的帮助。
答案 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)