簡體   English   中英

給定總和對 multiIndex dataframe 進行排序

[英]Sort multiIndex dataframe given the sum

您好,我在 Pandas 中准備了一個 MultiIndex 表,如下所示:

Lang                C++  java  python  All
Corp     Name                             
ASW      ASW        0.0   7.0     8.0   15
         Cristiano  NaN   NaN     8.0   8
         Michael    NaN   7.0     0     7
Facebook Facebook   8.0   1.0     5.0   14
         Piter      8.0   NaN     NaN    8
         Cristiano  NaN   NaN     3.0    3
         Michael    NaN   1.0     2.0    3
Google   Google     2.0  24.0     1.0   27
         Michael    NaN  24.0     NaN   24
         Piter      2.0   NaN     NaN    2
         Cristiano  NaN   NaN     1.0    1

現在我想對 Corp 的總和(在“All”列中)按降序排序的行組進行排序,然后我想 select 只有兩個索引“Corp”(及其行)是最大的,它應該看起來喜歡:

Lang                C++  java  python  All
Corp     Name                             
Google   Google     2.0  24.0     1.0   27
         Michael    NaN  24.0     NaN   24
         Piter      2.0   NaN     NaN    2
         Cristiano  NaN   NaN     1.0    1
ASW      ASW        0.0   7.0     8.0   15
         Cristiano  NaN   NaN     8.0   8
         Michael    NaN   7.0     0     7

謝謝你!

sort_values ,您可以對每組排序值,然后使用每組 All 的最大總和進行切片:

out = (df
    # for each company, sort the values using the All column in descending order
   .groupby(level=0).apply(lambda g: g.sort_values('All', ascending=False))
    # calculate the sum or All per company
    # get the index of the top 2 companies (nlargest(2))
    # slice to keep only those
   .loc[lambda d: d.groupby(level=0)['All'].sum().nlargest(2).index]
)

output:

Lang                C++  java  python  All
Corp     Name                             
Google   Google     2.0  24.0     1.0   27
         Michael    NaN  24.0     NaN   24
         Piter      2.0   NaN     NaN    2
         Cristiano  NaN   NaN     1.0    1
Facebook Facebook   8.0   1.0     5.0   14
         Piter      8.0   NaN     NaN    8
         Cristiano  NaN   NaN     3.0    3
         Michael    NaN   1.0     2.0    3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM