试图根据类型(这是一个包含10个左右字符串的列)计算每行的百分比等级。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (19)

我有一个超过一百万行的数据框架,其结构如下所示:

ID类型值1 Value2 ...(更多列) 1 A 20 4 ... 2 A 30 5 ... 3 B 14 7 ... 4 B 12 9 ...

我希望我能得到

ID类型值1 Value2 Pct_Rank_based_on_Value1 ...(更多列) 1 A 20 4 0.107 ... 2 A 30 5 0.021 ... 3 B 14 7 0.201 ... 4 B 12 9 0.875 ...

排名应该按照价值的顺序排列。最大值应该在0.001附近

我的目的是创建一个新的列,它是一个行的Value1(它是一列离散数字)在其类型(这是一列字符串,只有10个唯一值)中的百分比排名。

对于第1行,I??D是1,类型是A,值是20,我想计算它的类型也是A的那些行中的Value1的pct等级。

我刚刚重新格式化了我的示例。选择它们并选择“粗体”后,表格被搞乱了。

只是编辑,以澄清有超过1个数值列。而Value1不是第一个具有数字值的列。

提问于
用户回答回答于

这应该是可行的:

from pandas import DataFrame
df = DataFrame([['A', 20, 1], ['A', 30, 2], ['B', 14, 1], ['B', 12, 6]], columns=['Type', 'Value1', 'Value2'])
df['pct_rank'] = df.groupby('Type').rank(axis=0, pct=True, ascending=False)['Value1']

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问5 回答
  • 找虫虫

    5 粉丝0 提问4 回答
  • uncle_light

    5 粉丝518 提问3 回答
  • 学生

    8 粉丝476 提问3 回答

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动
http://www.vxiaotou.com