pd.series 会对字典键进行排序吗?

问题描述 投票:0回答:3

我正在使用 Jake Vaderplas 提供的 Jupyter 笔记本,“Python 数据科学手册”,它说:数据可以是字典,其中索引默认为排序的字典键

但是当我运行代码时,输出未按字典键排序。我在这里缺少什么?

在:

pd.Series({2:'a', 1:'b', 3:'c'})

出:

2    a
1    b
3    c
dtype :object

虽然预期输出应该是

在:

pd.Series({2:'a', 1:'b', 3:'c'})

出:

1    b
2    a
3    c
dtype :object
pandas series
3个回答
3
投票

首先要明确的是,pandas 系列默认不是

sorted
。但如果你想制作一个系列,索引应该是
sorted

sr = pd.Series({2:'a', 1:'b', 3:'c'}).sort_index()
sr

输出:

1    b
2    a
3    c

这将为您提供所需的结果。


2
投票

.sort_index()
添加到您的代码中,您将得到您想要的结果。


0
投票

根据《Python for Data Analysis - Second Edition》第 125 页,我们可以看到作者提供了下面给出的文本和示例。 “当您仅传递一个字典时,结果系列中的索引将按排序顺序包含字典的键”

创建词典时,您可以看到不按顺序排列的城市名称。但结果显示是正常的。

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

obj3 = pd.Series(sdata)
obj3

# Ohio 35000
# Oregon 16000
# Texas 71000
# Utah 5000
# dtype: int64

我认为原因可能是字典对象引起的变化。

© www.soinside.com 2019 - 2024. All rights reserved.