将具有多索引的一个 DF 中的值除以另一个 DF 中的值并绘制结果

Posted

技术标签:

【中文标题】将具有多索引的一个 DF 中的值除以另一个 DF 中的值并绘制结果【英文标题】:Dividing values in one DF with multi-indexing by values from another and plotting results 【发布时间】:2017-05-24 07:46:12 【问题描述】:

我有一个 DF,其中包含 N 个学生和不同学科的成绩:

ANA  Math      96.0
     Biology   82.0
     Chemistry 72.0
TONY Math      77.0
     Biology   100.0
     Chemistry 82.0
ARI  Math      94.0
     Biology   98.0

我希望绘制一个条形图,其中包含 3 个 最佳 学生的 所有 科目成绩(按降序排列),其中最好的学生是成绩最高的学生他所学科目的所有平均成绩。

在情节中,对于每个学生每个年级应该乘以它在df2中的值(每个学生都有不同的值):

ANA  0.80
TONY 0.75
ARI  0.95

例如:情节中的 ANA 成绩应该是:

ANA  Math      76.8
     Biology   65.6
     Chemistry 57.6

我已经设法为最好的 3 名学生绘制了图表,但是这些学生没有按降序排列。 此外,在绘制之前,我还没有找到将每个学生的成绩乘以 df2 中的值的方法。

有什么建议吗?

【问题讨论】:

【参考方案1】:
top3 = df.groupby(level=0).mean().nlargest(3).index.tolist()
df.sort_index().loc[top3].mul(df2, level=0)

0     1        
ANA   Biology      65.60
      Chemistry    57.60
      Math         76.80
ARI   Biology      93.10
      Math         89.30
TONY  Biology      75.00
      Chemistry    61.50
      Math         57.75
dtype: float64

【讨论】:

以上是关于将具有多索引的一个 DF 中的值除以另一个 DF 中的值并绘制结果的主要内容,如果未能解决你的问题,请参考以下文章

获取Pandas df的子集,其中多个列匹配来自另一个df的值

将多索引数据框的子集除以字典中的值

如何在熊猫中使用具有多索引的地图?

在熊猫数据框上设置多索引的最佳方法

具有多索引的 Pandas 子数据透视表和总数据透视表

将多个键上的 pandas 数据帧映射为列或 multiIndex