执行Pandas last("2M")时报TypeError:仅支持DatetimeIndex,求助
解决
TypeError: 'last' only supports a DatetimeIndex index 错误 这个报错的核心原因很明确:last() 方法要求DataFrame的索引必须是DatetimeIndex类型,而不是看起来像日期的字符串/对象类型索引。结合你的数据集情况,我们可以分三步解决:
1. 修正列名不匹配问题
你的数据集里的日期列是 Ship_Date,但代码里写的是 Date——这是一个低级但致命的拼写错误,先把它改过来。
2. 确保日期列是datetime类型
即使你的Ship_Date值看起来是日期格式,Pandas也可能把它当作字符串存储。必须显式转换为datetime类型,这样后续设置为索引时才会生成DatetimeIndex:
import pandas as pd # 先把Ship_Date转换为datetime类型 df['Ship_Date'] = pd.to_datetime(df['Ship_Date'])
3. 执行排序、设索引和last()操作
现在日期列已经是datetime类型,设置为索引后就能正常使用last()方法了:
df_updated = df.sort_values(by="Ship_Date", ascending=False).set_index("Ship_Date").last("2M")
额外说明
如果你的Ship_Date列本来就是datetime类型,那只需要修正列名(把Date改成Ship_Date)就能解决问题。但显式转换是个好习惯,可以避免因数据类型隐式转换带来的意外问题。
内容的提问来源于stack exchange,提问作者newbie pandas
相关产品推荐
相关产品推荐

