我想在熊猫中指定等级顺序。我知道你可以这样做:
df.groupby([x, y]).rank(ascending=False)
问题1
如何在agg方法中指定排名顺序(升序=假):
df.groupby([x, y]).agg({
('r', 'c'): 'rank'
})
问题2
df.groupby([x, y])['r', 'c'].rank(ascending=False)
引发错误:KeyError: Columns not found
如何为排名指定多级列?
数据结构如下:
r
c
z x y
1 2016-11-01 00:00:00+00:00 3121 143
3923 11
3953 4
4880 12
答案 0 :(得分:1)
我认为你可以使用:
x = 'x'
y = 'y'
b = df[('r','c')].groupby(level=[x, y]).rank(ascending=False)
print (b)
z x y
1 2016-11-01 00:00:00+00:00 3121 1.0
3923 1.0
3953 1.0
4880 1.0
Name: (r, c), dtype: float64
或者需要tuple
- 添加,
到最后:
x = 'x'
y = 'y'
b = df.groupby(level=[x, y])[('r','c'), ].rank(ascending=False)
print (b)
r
c
z x y
1 2016-11-01 00:00:00+00:00 3121 1.0
3923 1.0
3953 1.0
4880 1.0
#print (df)