【问题标题】:Conditional Percentile Rank in PandasPandas 中的条件百分位数排名
【发布时间】:2021-10-12 10:35:17
【问题描述】:

我目前使用 df.rank 对列的值进行百分位排名,如下所示:

import pandas as pd

columns=['Country','Score']
data=[('US',5),('US',3),('US',12),('US',7),('US',47),('US',87),('US',97),
('US',55),('Brazil',15),('Brazil',32),('Brazil',62),('Brazil',71),
('Brazil',7, ('Brazil',57),('Brazil',45),('Brazil',57)]

df=pd.DataFrame(columns=columns,data=data)
df['Rank']=df['Score'].rank(pct=True)
df

    Country Score   Rank
0   US      5       0.12500
1   US      3       0.06250
2   US      12      0.31250
3   US      7       0.21875
4   US      47      0.56250
5   US      87      0.93750
6   US      97      1.00000
7   US      55      0.62500
8   Brazil  15      0.37500
9   Brazil  32      0.43750
10  Brazil  62      0.81250
11  Brazil  71      0.87500
12  Brazil  7       0.21875
13  Brazil  57      0.71875
14  Brazil  45      0.50000
15  Brazil  57      0.71875

如何仅根据项目所在国家/地区的分数计算百分位排名?因此,美国的商品将仅相对于美国商品进行排名,而巴西的商品将仅相对于巴西商品进行排名?

我的国家/地区比此处显示的多得多,因此单独执行(即df[df.Country=='US']... 或遍历循环似乎不是最有效的方式。

提前致谢!

【问题讨论】:

    标签: python pandas dataframe rank


    【解决方案1】:

    我想我想通了,但欢迎其他建议......

    df['Country_Rank'] = df.groupby(['Country'])['Score'].rank(pct=True)
    df
    
        Country Score   Rank    Country_Rank
    0   US      5       0.12500 0.2500
    1   US      3       0.06250 0.1250
    2   US      12      0.31250 0.5000
    3   US      7       0.21875 0.3750
    4   US      47      0.56250 0.6250
    5   US      87      0.93750 0.8750
    6   US      97      1.00000 1.0000
    7   US      55      0.62500 0.7500
    8   Brazil  15      0.37500 0.2500
    9   Brazil  32      0.43750 0.3750
    10  Brazil  62      0.81250 0.8750
    11  Brazil  71      0.87500 1.0000
    12  Brazil  7       0.21875 0.1250
    13  Brazil  57      0.71875 0.6875
    14  Brazil  45      0.50000 0.5000
    15  Brazil  57      0.71875 0.6875
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2014-04-15
      • 2020-10-07
      相关资源
      最近更新 更多