【问题标题】:Keep order in plot of pandas groupby在 pandas groupby 的情节中保持秩序
【发布时间】:2017-07-26 22:38:01
【问题描述】:

我有一个如下所示的数据框

univ  date            ms      cs
 C    11/01/1977      0.2     0.1
 C    11/02/1977      0.3     0.4
 B    11/01/1977      0.6     -0.1
 B    11/02/1977      0.55    -0.5
 A    11/01/1977      0.23    0.2
 A    11/02/1977      0.12    0.15
 etc

这是我目前拥有的

fig, axes = plt.subplots(1, 3, figsize=(15, 5))

for (universe, group), ax in zip(df.groupby([df.univ]), axes.flatten()):
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe)
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)

这会生成 3 个散点图,范围从 0 到 1。 我想做的是保持标题为 C、B、A 的地块的顺序,这样它就可以按 A、B、C 排序。

感谢您的帮助!

【问题讨论】:

标签: python pandas matplotlib


【解决方案1】:

问题在于groupby 默认情况下按排序顺序返回项目。只需设置标志sort=False

for (universe, group), ax in zip(df.groupby([df.univ], sort=False), axes.flatten()):
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe)
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)

您也可以按照您想要的任何顺序退回它们。

gb = df.groupby('univ')
desired_order = ('B', 'A', 'C')
for (universe, group), ax in zip(((u, gb.get_group(u)) for u in desired_order), 
                                 axes.flatten()):
    ...

顺便说一句,每个帖子应该只有一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 2017-12-23
    • 1970-01-01
    • 2017-02-15
    • 2017-05-29
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多