回答編集履歴

2

適切に連番でRankが振られるように修正

2017/04/04 02:05

投稿

tell_k
tell_k

スコア2120

test CHANGED
@@ -6,7 +6,13 @@
6
6
 
7
7
  df = pd.read_csv('test.csv')
8
8
 
9
- df2 = df.groupby('COUNTRY_NAME').size().rank(ascending=False).reset_index(name='RANK')
9
+ df2 = df.groupby('COUNTRY_NAME').size().rank(
10
+
11
+ ascending=False,
12
+
13
+ method='first'
14
+
15
+ ).astype(int).reset_index(name='RANK')
10
16
 
11
17
  df = df.merge(df2, right_index=True, on='COUNTRY_NAME').sort()
12
18
 
@@ -20,8 +26,6 @@
20
26
 
21
27
  ```
22
28
 
23
- GENDER AGE STATUS COUNTRY_NAME
24
-
25
29
  0 F 41 NeverM USA
26
30
 
27
31
  1 M 30 NeverM Brazil
@@ -34,6 +38,10 @@
34
38
 
35
39
  5 M 40 NeverM USA
36
40
 
41
+ 6 M 40 NeverM China
42
+
43
+ 7 F 21 Married China
44
+
37
45
  ```
38
46
 
39
47
 
@@ -44,16 +52,20 @@
44
52
 
45
53
  GENDER AGE STATUS COUNTRY_NAME RANK
46
54
 
47
- 0 F 41 NeverM USA 1.0
55
+ 0 F 41 NeverM USA 1
48
56
 
49
- 1 M 30 NeverM Brazil 3.0
57
+ 1 M 30 NeverM Brazil 4
50
58
 
51
- 2 F 21 Married USA 1.0
59
+ 2 F 21 Married USA 1
52
60
 
53
- 3 M 40 NeverM Japan 2.0
61
+ 3 M 40 NeverM Japan 3
54
62
 
55
- 4 F 21 Married Japan 2.0
63
+ 4 F 21 Married Japan 3
56
64
 
57
- 5 M 40 NeverM USA 1.0
65
+ 5 M 40 NeverM USA 1
66
+
67
+ 6 M 40 NeverM China 2
68
+
69
+ 7 F 21 Married China 2
58
70
 
59
71
  ```

1

元の並び順を維持するようにしました。

2017/04/04 02:05

投稿

tell_k
tell_k

スコア2120

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  df2 = df.groupby('COUNTRY_NAME').size().rank(ascending=False).reset_index(name='RANK')
10
10
 
11
- df = df.merge(df2, on='COUNTRY_NAME')
11
+ df = df.merge(df2, right_index=True, on='COUNTRY_NAME').sort()
12
12
 
13
13
  ```
14
14
 
@@ -46,14 +46,14 @@
46
46
 
47
47
  0 F 41 NeverM USA 1.0
48
48
 
49
- 1 F 21 Married USA 1.0
49
+ 1 M 30 NeverM Brazil 3.0
50
50
 
51
- 2 M 40 NeverM USA 1.0
51
+ 2 F 21 Married USA 1.0
52
52
 
53
- 3 M 30 NeverM Brazil 3.0
53
+ 3 M 40 NeverM Japan 2.0
54
54
 
55
- 4 M 40 NeverM Japan 2.0
55
+ 4 F 21 Married Japan 2.0
56
56
 
57
- 5 F 21 Married Japan 2.0
57
+ 5 M 40 NeverM USA 1.0
58
58
 
59
59
  ```