使用Lambda表达式重置熊猫系列的索引

问题描述

我有一个熊猫系列,ts。

Date
2020-06-02    10.02
2020-06-03    10.45
2020-06-04    10.95
2020-06-05    11.23

出于绘图目的,我先将索引转换为数据帧,然后将其转换为字符串。然后应用lambda表达式,然后将其提取为Pandas系列。

dfn = ts.to_frame()
dfn.index = dfn.reset_index().apply(lambda x: x['Date'].strftime('%Y-%m-%d'),axis=1)
tsn = dfn.iloc[:,0]

是否有更有效的方法

解决方法

您可以将rename与lambda函数一起用于索引的更改格式:

ts = ts.rename(lambda x: x.strftime('%Y-%m-%d'))

或者另一个想法是将Series构造函数与DatetimeIndex.strftime一起使用:

ts = pd.Series(ts.to_numpy(),index=ts.index.strftime('%Y-%m-%d'))

print (ts)
Date
2020-06-02    10.02
2020-06-03    10.45
2020-06-04    10.95
2020-06-05    11.23
dtype: float64

print (ts.index)
Index(['2020-06-02','2020-06-03','2020-06-04','2020-06-05'],dtype='object',name='Date')