Pandas:对列类别中的每一行进行排序/百分比

时间:2017-03-09 19:46:18

标签: python sorting pandas dataframe percentile

我想知道是否有一种雄辩的方法来对Pandas数据帧中的列进行排序(计算百分位数),具有以下条件:

在每个类别中进行百分位数计算。每列都属于一个类别,每个类别中的百分位数计算(请参见链接以获取图形说明。)

我了解到我可以执行以下操作,忽略这些类别:

TargetRanking = StartingData.rank(axis="columns", pct=True)

但我需要按每列的类别对每一行进行分组。请参阅以下链接中的图形说明。

enter image description here

1 个答案:

答案 0 :(得分:1)

假设您有一个带有类别映射的字典,您可以简单地按该字典对列进行分组,然后像以前一样使用rank

categories = {'X1': 'A', 'X3': 'A', 'X5': 'A', 'X2': 'B', 'X4': 'B'}

df.set_index('Date').groupby(categories, axis=1).rank(pct=True)

enter image description here