我想指定 pandas 中的排名顺序。我知道你可以做到,当你这样做时:
df.groupby([x, y]).rank(ascending=False)
问题1
如何在 agg 方法中指定排名顺序(升序=False):
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
我想你可以使用:
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)