2017-02-02 1 views
-1
A1  1 
A2  2 
A3  1.5 
B1  1 
B2 -2 
B3  2 
B4 -1.5 

지금 내가 직접 팬더에게 붙박이 기능을 사용하여이를 달성 할 수있는 방법 *, B * 등 각 정규식 A를 내 순위의 출력,파이썬 팬더 조건 순위는

A1  1  3 
A2  2  1 
A3  1.5 2 
B1  1  2 
B2 -2  4 
B3  2  1 
B4 -1.5 3 

을 원하는 전체 세트에서 순위를 매기십시오.

답변

1

당신은 rankextract 만든 Series에 의해 groupby을 사용할 수 있습니다

print (df) 
    a b 
0 A1 1.0 
1 A2 2.0 
2 A3 1.5 
3 B1 1.0 
4 B2 -2.0 
5 B3 2.0 
6 B4 -1.5 

a = df.a.str.extract('([a-zA-Z])', expand=False) 
print (a) 
0 A 
1 A 
2 A 
3 B 
4 B 
5 B 
6 B 
Name: a, dtype: object 

df['c'] = df.groupby(a).b.rank(method='dense', ascending=False).astype(int) 
print (df) 
    a b c 
0 A1 1.0 3 
1 A2 2.0 1 
2 A3 1.5 2 
3 B1 1.0 2 
4 B2 -2.0 4 
5 B3 2.0 1 
6 B4 -1.5 3