我有一个数据集df
:
Dewptm Fog Humidity Pressurem Tempm Wspdm Rainfall
datetime_utc
1996-11-01 11.666667 0.0 52.916667 -2659.666667 22.333333 2.466667 0
1996-11-02 10.458333 0.0 48.625000 1009.833333 22.916667 8.028571 0
1996-11-03 12.041667 0.0 55.958333 1010.500000 21.791667 4.804545 0
1996-11-04 10.222222 0.0 48.055556 1011.333333 22.722222 1.964706 0
...
下面是df.columns
:
Index(['Dewptm', 'Fog', 'Humidity', 'Pressurem', 'Rain', 'Tempm', 'Wspdm',
'Rainfall'],
dtype='object')
如何将datetime_utc
列拆分为年、月和日列?
我试过:
df["day"] = df['datetime_utc'].map(lambda x: x.day)
df["month"] = df['datetime_utc'].map(lambda x: x.month)
df["year"] = df['datetime_utc'].map(lambda x: x.year)
错误:
KeyError: 'datetime_utc'
还有
pd.concat([df.drop('datetime_utc', axis = 1),
(df.datetime_utc.str.split("-).str[:3].apply(pd.Series)
.rename(columns={0:'year', 1:'month', 2:'day'}))], axis = 1)
我收到错误:
KeyError: "['datetime_utc'] not found in axis"
我面临的问题是列datetime_utc
是我的数据集中的默认索引列。
2条答案
按热度按时间0md85ypi1#
问题是
datetime_utc
在索引中而不是列中,因此必须访问索引才能创建新列:如果您希望
datetime_utc
作为列,则必须重置索引,然后可以使用dt.month
、dt.year
和dt.day
访问datetime方法,如下所示:注意如果您的索引还不是
datetime
类型,请在尝试提取年、月和日之前使用以下命令:mec1mxoz2#
一个单行版本是在每个Timestamp上调用
timetuple()
,它返回一个类似于datetime.datetime.timetuple
的元组,因为只需要year、month、day,所以对前3个元素进行切片。