为什么设置索引后Pandas DataFrame的数值顺序与预期不符?
问题原因
- 核心问题出在你定义
data时使用了Python集合类型:Python中用{}包裹、元素用逗号分隔且没有键值对的结构是集合,它是无序不重复的数据结构,底层基于哈希表存储,不会保留你编写代码时的元素写入顺序。 - 你设置的行索引本身是生效的:输出的行标签
1_i、2_i...5_i完全符合你传入的index顺序,乱序的是从集合中提取的元素序列,而非行索引的顺序。
修复方法
把data的定义从集合改为有序的列表类型即可,修改后代码如下:
import pandas as pd data = ["1","2","3","4","5"] # 将{}改为[],使用有序列表 index = ["1_i","2_i","3_i","4_i","5_i"] df = pd.DataFrame(data,index=index) print(df)
运行后即可得到你预期的数值与索引的对应关系。
内容的提问来源于stack exchange,提问作者oss
相关产品推荐
相关产品推荐

