如何根据Pandas DataFrame列值为索引添加不同前缀解决重复索引问题
解决DataFrame重复索引及选择性添加前缀问题
核心思路
通过字典映射建立column1值与前缀的对应关系,将前缀与原索引拼接生成唯一索引,解决重复索引导致的reindex报错问题。
具体实现代码
import pandas as pd # 构造示例df2(和你提供的结构一致) data = { 'column1': ['sample_a', 'sample_a', 'sample_b', 'sample_c'], 'column2': [1, 3, 2, 3] } df2 = pd.DataFrame(data, index=['A', 'B', 'B', 'C']) # 1. 定义column1到前缀的映射字典,可根据需求扩展 prefix_map = { 'sample_a': 'a_', 'sample_b': 'b_', 'sample_c': 'c_' } # 2. 生成新索引:前缀 + 原索引(转字符串确保拼接兼容所有索引类型) df2.index = df2['column1'].map(prefix_map) + df2.index.astype(str) # 查看处理后的结果 print(df2)
执行结果
处理后的df2结构与预期完全一致:
| index | column1 | column2 |
|---|---|---|
| a_A | sample_a | 1 |
| a_B | sample_a | 3 |
| b_B | sample_b | 2 |
| c_C | sample_c | 3 |
后续操作
此时df2的索引已完全唯一,可正常执行df2 = df2.reindex(df.index)操作,不会再触发cannot reindex on an axis with duplicate labels错误。
内容的提问来源于stack exchange,提问作者Joy Zheng
相关产品推荐
相关产品推荐

