【问题标题】:Selecting a column on a multi-index pandas DataFrame在多索引 pandas DataFrame 上选择一列
【发布时间】:2014-01-01 11:10:00
【问题描述】:

鉴于此 DataFrame:

from pandas import DataFrame
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo'], ['one', 'two', 'one', 'two',        'one', 'two']]

tuples = zip(*arrays)

index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

df = DataFrame(randn(3, 6), index=[1, 2, 3], columns=index)

如何绘制图表: X 轴:1,2,3。 三个系列名称分别为:bar、baz、foo。 Y 轴值:“一”列。 每个点旁边的标签是“二”列。

因此,换句话说,假设我有三只股票(bar、baz 和 foo),每只股票在每个日期(1、2、3)都有各自的股票价格('one'),并且每个点的注释位于“二”列。我如何绘制它?

(抱歉没有显示df表,我不知道如何正确复制)

【问题讨论】:

  • 这部分你不能做?选择部分数据?阴谋?用标签绘图?你知道如何绘制这个图表(没有标签)吗?您能否提供一些(可能部分有效)尝试。
  • 您好,感谢您的评论。不,我无法在没有标签的情况下绘制此 DataFrame,我根本无法绘制它
  • 意思是,我不知道如何选择数据(我知道如何绘制一般)

标签: python matplotlib pandas multi-index


【解决方案1】:

从表单的数据框开始

>>> df
first        bar                 baz                 foo
second       one       two       one       two       one       two
1       0.085930 -0.848468  0.911572 -0.705026 -1.284458 -0.602760
2       0.385054  2.539314  0.589164  0.765126  0.210199 -0.481789
3      -0.352475 -0.975200 -0.403591  0.975707  0.533924 -0.195430

选择并绘制'one'

>>> one = df.xs('one', level=1, axis=1)
>>> one
first       bar       baz       foo
1      0.085930  0.911572 -1.284458
2      0.385054  0.589164  0.210199
3     -0.352475 -0.403591  0.533924    

>>> pyplot.show(one.plot())

【讨论】:

  • 非常感谢。知道如何在每个点旁边添加“两个”作为注释吗?如果我想要另一列,比如“三”,除了“二”之外,也可以作为注释包含在内?
  • @erantdo 事实上,我想到了一种可能的解决方案,但不喜欢同时回答几个问题,所以选择回答您的主要问题。你可以自己尝试,咨询stackoverflow.com/questions/5147112/…,如果你发现自己卡住了,开始一个新的话题(至少,表明你尝试过)。
猜你喜欢
  • 1970-01-01
  • 2018-10-07
  • 2019-02-08
  • 2015-03-24
  • 2019-04-13
  • 2020-12-21
  • 2017-05-06
相关资源
最近更新 更多