【问题标题】:Plot Specific Column from Multindex Table with Pandas使用 Pandas 从多索引表中绘制特定列
【发布时间】:2021-04-08 18:39:12
【问题描述】:

我在 pandas 中使用聚合创建了表格,如下所示:

df=df.groupby(['choice mode','required like me']).agg({'mean prop like me ':['mean'],'unhappy':['mean']})

>>>                         mplm          unhappy
choice mode         rlm     mean         mean
ba                  0.2     0.651        11
                    0.3     0.561        12
                    0.6     0.721        10
btc                 0.2     0.891        0
                    0.3     0.124        0
                    0.6     0.321        0
btr                 0.2     0.412        12
                    0.3     0.112        34
                    0.6     0.531        31

该表是多索引表。 我想创建两个图表: 图表一:x_axis= rlm, y_axis=mplm mean , 三行 - 每个选择模式一行 图表二:x_axis= rlm, y_axis=unhappy mean , 三行 - 每个选择模式一行

问题是我无法区分 unhappy 和 mplm :

df.unstack(level=0).plot()

如您所见,我得到了 6 行,并且该图具有索引的所有级别。

我想得到两个不同的图表,它们的值是 plm 和 unhappy 值。

我可以通过将原始表切片以具有 onlu plm 或 unhappy 然后进行聚合并降低级别来做到这一点,但我确信有更聪明的方法来做到这一点

【问题讨论】:

    标签: python pandas matplotlib aggregate multi-index


    【解决方案1】:

    你可以unstacklevel=0上的dataframe,然后选择你想要plot的多索引列:

    s = df.unstack(level=0)
    s[('mplm', 'mean')].plot(), s[('unhappy', 'mean')].plot()
    

    (可选)您可以在level=0 上的unstackingaxis=1drop 上未使用的级别:

    s = df.unstack(level=0).droplevel(1, axis=1)
    s['mplm'].plot(), s['unhappy'].plot()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2017-03-24
      • 2016-03-18
      • 1970-01-01
      • 2020-07-14
      • 2015-10-28
      相关资源
      最近更新 更多