인스턴스 집합을 사용하여 8 개의 알고리즘 집합 (solver
열)을 비교합니다. 각 인스턴스는 각 알고리즘마다 한 번 실행되고 매개 변수 수준은 D
(1에서 10까지). 그래서, 결과 데이터 프레임은 다음과 같을 것이다 :python-pandas를 사용하여 그룹 내에서 순위 지정
instance D z solver
0 1000_ep0.0075 1 994 threatened
1 1000_ep0.0075 1 993 desc
2 1000_ep0.0075 1 994 degree
3 1000_ep0.0075 1 993 threatened_desc
4 1000_ep0.0075 1 993 threatened_degree
5 1000_ep0.0075 1 994 desc_later
6 1000_ep0.0075 1 994 degree_later
7 1000_ep0.0075 1 993 dyn_degree
8 1000_ep0.0075 2 986 threatened
9 1000_ep0.0075 2 987 desc
10 1000_ep0.0075 2 988 degree
11 1000_ep0.0075 2 987 threatened_desc
12 1000_ep0.0075 2 986 threatened_degree
13 1000_ep0.0075 2 987 desc_later
14 1000_ep0.0075 2 988 degree_later
15 1000_ep0.0075 2 987 dyn_degree
....
을 z
열이 알고리즘에 의해 발견 된 값 (작은 이상)에 해당하는 곳.
각 배열 <instance, D>
에 대해 z
의 값에 따라 각 알고리즘의 순위에 해당하는 데이터 프레임에 열을 추가하고 싶습니다. 위의 예를 들어, 다음과 같이 될 것이다 :
instance D z solver z_rank
0 1000_ep0.0075 1 994 threatened 2
1 1000_ep0.0075 1 993 desc 1
2 1000_ep0.0075 1 994 degree 2
3 1000_ep0.0075 1 993 threatened_desc 1
4 1000_ep0.0075 1 993 threatened_degree 1
5 1000_ep0.0075 1 994 desc_later 2
6 1000_ep0.0075 1 994 degree_later 2
7 1000_ep0.0075 1 993 dyn_degree 1
8 1000_ep0.0075 2 986 threatened 1
9 1000_ep0.0075 2 987 desc 2
10 1000_ep0.0075 2 988 degree 3
11 1000_ep0.0075 2 987 threatened_desc 2
12 1000_ep0.0075 2 986 threatened_degree 1
13 1000_ep0.0075 2 987 desc_later 2
14 1000_ep0.0075 2 988 degree_later 3
15 1000_ep0.0075 2 987 dyn_degree 2
...
python-pandas
을 사용하여, 이것은 내가 지금까지 무엇을 얻을 수 있습니다 : 명확하지 않다
df.loc[:, 'z_rank'] = df_rg.groupby(['instance', 'D'])['z'].rank()
df.head(16)
instance D z solver z_rank
0 1000_ep0.0075 1 994 threatened 47.5
1 1000_ep0.0075 1 993 desc 16.5
2 1000_ep0.0075 1 994 degree 47.5
3 1000_ep0.0075 1 993 threatened_desc 16.5
4 1000_ep0.0075 1 993 threatened_degree 16.5
5 1000_ep0.0075 1 994 desc_later 47.5
6 1000_ep0.0075 1 994 degree_later 47.5
7 1000_ep0.0075 1 993 dyn_degree 16.5
8 1000_ep0.0075 2 986 threatened 7.0
9 1000_ep0.0075 2 987 desc 18.5
10 1000_ep0.0075 2 988 degree 44.5
11 1000_ep0.0075 2 987 threatened_desc 18.5
12 1000_ep0.0075 2 986 threatened_degree 7.0
13 1000_ep0.0075 2 987 desc_later 18.5
14 1000_ep0.0075 2 988 degree_later 44.5
15 1000_ep0.0075 2 987 dyn_degree 18.5
내가 원하는 것을.
누군가 저를 도와 줄 수 있습니까?
df['z_rank'] = df.groupby(['instance', 'D'])['z'].rank(method='dense').astype(int)
니스! 감사! 그룹 간 순위를 높이지는 방법이 있습니까? –
그래서 출력은 어떻게 될까요? –
전체 df에서 dense 메서드를 적용하면 다음과 같이 표시됩니다. http://pastebin.com/raw/9me5tnTa. 첫 번째 그룹에서 가장 작은 순위는 3입니다. 1 사이의 숫자가 증가해야합니다. 그룹 사이의 간격이 증가하기 때문입니다. –