【问题标题】:Panda Data Frame indexing not ordering correctly熊猫数据框索引未正确排序
【发布时间】:2020-10-23 21:27:30
【问题描述】:

我想问一个关于 python 中 panda 的问题 - 特别是关于它的 DataFrame() 函数。

我有以下数据要转换为数据框:

pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)

我希望嵌套字典的外键是列名,内键是索引名:

请注意,解释器语法是在 Jupyter Notebook Python 3 上运行的 iPython

     Nevada   Ohio
2000    NaN    1.5
2001    2.4    1.7
2002    2.9    3.6

但是,我不断地获取按错误顺序排列的键的数据:

>> frame3
        Nevada   Ohio
2001    2.4    1.7
2002    2.9    3.6
2000    NaN    1.5

而且我似乎无法让索引按我想要的顺序显示。

为什么会这样?我该如何纠正这个问题?

奇怪的是,这是出现在我的 Jupyter 笔记本中的内容:

但是在使用learnpython.org 的 IDE 时,我得到以下预期输出:

再次,在我的 iPython 上观察到相同的错误输出:

【问题讨论】:

  • 你能举个例子说明你希望它是什么样子吗?
  • @Chris 我编辑了代码感谢 vik1245

标签: python pandas dataframe dictionary jupyter-notebook


【解决方案1】:

一个简单的解决方案可以是:

pop = {'Nevada': {2000:np.nan,2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)

或者在创建数据框后对索引进行排序:

frame3 = pd.DataFrame(pop).sort_index()

结果就是你想要的:

      Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

【讨论】:

  • 我已按问题进行了更新,以进一步反映我的输出与我在 Jupyter 中收到的不一致,因此这似乎是一个基于 Jupyter 的问题。虽然,您的回答受到赞赏和赞成!
  • 是的,问题可能出在 Jupyter 笔记本的默认设置上。当没有排序首选项时,它会将具有空值的首选项放在最后...
  • 看起来是这样。我刚刚在三个不同的 Jupyter 版本和 iPython 上运行了完全相同的文件,并且都返回了错误。很有趣。
【解决方案2】:

您只需将其放入数据框中并对其进行排序。看看这个:

pandas_dataframe = pd.DataFrame(pop).sort_index()
print(pandas_dataframe)

Out[128]:
    Nevada  Ohio
2000    NaN 1.5
2001    2.4 1.7
2002    2.9 3.6

【讨论】:

  • 我以为 Panda 会自动对数据进行排序。我会接受你的回答,因为它是最干净的,但出于好奇(当然,除非我弄错了)为什么这里没有观察到?
  • 这里没有观察到什么?
猜你喜欢
  • 2017-04-12
  • 2022-07-10
  • 2017-01-12
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2015-05-28
相关资源
最近更新 更多