如何将含非唯一索引的Pandas DataFrame转换为唯一索引的DataFrame?
问题原因与解决方法
你的问题核心是DataFrame存在重复索引:总索引数远大于唯一索引数,说明大量索引值重复。当你用df['order_number'][0]查询时,Pandas会返回所有索引值为0的行,而非你预期的单行。
验证重复索引
先执行以下代码确认重复情况:
# 统计重复索引的数量 print(df.index.duplicated().sum()) # 查看唯一索引的总数 print(len(df.index.unique()))
解决方法
场景1:索引无业务意义,直接重置为默认索引
如果索引只是行的标识、没有实际业务含义,直接重置为连续整数索引即可彻底解决问题:
df = df.reset_index(drop=True)
重置后使用df['order_number'][0]就能精准返回第一行的对应值。
场景2:索引有业务意义,需保留但避免查询歧义
如果索引本身有业务价值不能删除,改用**位置索引iloc**来定位行(iloc是按行的物理位置查询,和索引值无关):
# 取物理位置第1行的order_number列 df['order_number'].iloc[0] # 更规范的写法 df.iloc[0]['order_number']
内容的提问来源于stack exchange,提问作者sa7tama
相关产品推荐
相关产品推荐

