Python 多索引DataFrame根据日期索引最大值新增列问题求助
报错原因
你调用df.index.max()时,返回的是整个多层索引的最大值元组(Timestamp('2021-01-01 00:00:00'), 'c'),Pandas会把这个长度为2的元组识别为长度为2的序列,和你的DataFrame行数不匹配,因此抛出长度不匹配的报错。同时你实际需要的是第一层时间索引的最大值,而非完整的多层索引元组。
解决方法
两步操作即可实现需求:
- 提取第一层时间索引的标量格式最大值
# 方法1:直接读取第一层索引计算最大值,不受索引顺序调整影响,更稳定 max_date = df.index.get_level_values(0).max() # 方法2:也可从已返回的多层索引最大值元组中取第一个元素 # max_date = df.index.max()[0]
- 直接为DataFrame新增列,Pandas会自动将单个时间标量广播到所有行,不会出现长度匹配问题
df['maxdate'] = max_date
内容的提问来源于stack exchange,提问作者Andy Jensen
相关产品推荐
相关产品推荐

