如何修改DataFrame的索引?替换索引值且解决reindex无效问题
解决办法
你用df.reindex(qtrs)无效的原因很明确:reindex是用来根据新索引重新对齐数据的,它会在原DataFrame里找和新索引匹配的行。原索引是数字[0,1,2,3],新索引是字符串['Q1','Q2','Q3','Q4'],完全没有匹配项,所以返回的是全NaN的空DataFrame,这显然不是你要的结果。
下面是两种直接修改索引的可行方案,都不会新增列,也不会改动原有数据:
方法1:直接赋值索引(最简便)
直接给DataFrame的index属性赋值新的索引列表,一步到位:
import pandas as pd # 示例DataFrame(和你的结构一致) df = pd.DataFrame({'col': [10, 20, 30, 40]}, index=[0, 1, 2, 3]) qtrs = ['Q1', 'Q2', 'Q3', 'Q4'] # 替换索引 df.index = qtrs
方法2:用rename映射替换
如果原索引不是连续数字,或者你需要更灵活的索引对应关系,可以用rename方法,通过字典指定原索引到新索引的映射:
# 构建索引映射字典 index_mapping = {0: 'Q1', 1: 'Q2', 2: 'Q3', 3: 'Q4'} # 执行替换 df = df.rename(index=index_mapping)
内容的提问来源于stack exchange,提问作者Vivek Dabholkar
相关产品推荐
相关产品推荐

