我想知道是否有一种雄辩的方法来对Pandas数据帧中的列进行排序(计算百分位数),具有以下条件:
在每个类别中进行百分位数计算。每列都属于一个类别,每个类别中的百分位数计算(请参见链接以获取图形说明。)
我了解到我可以执行以下操作,忽略这些类别:
TargetRanking = StartingData.rank(axis="columns", pct=True)
但我需要按每列的类别对每一行进行分组。请参阅以下链接中的图形说明。
答案 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)