teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/08/01 13:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -8,4 +8,34 @@
8
8
  ここで生まれる折衷案は、**前以てファイルを分割すること**です。
9
9
  扱いやすく分割するには、3項目目をカギにして分類すれば良いことに気付きます。
10
10
 
11
- 10から100ほどのファイルに分割できるような分類方法を考えてください。
11
+ 10から100ほどのファイルに分割できるような分類方法を考えてください。
12
+
13
+ ---
14
+ データが全部読み取れるなら、こんな感じで書けます。
15
+ ```Python
16
+ from collections import Counter
17
+ import pandas as pd
18
+
19
+
20
+ with open('src.csv') as fin:
21
+ df = pd.read_csv(
22
+ fin, header=None, delim_whitespace=True
23
+ )
24
+
25
+ id_count = Counter()
26
+ for _, group in df.groupby(2):
27
+ group = group.sort_values(by=3, ascending=False)
28
+
29
+ for i, (_, series) in enumerate(group.iterrows()):
30
+ idd, *_ = series
31
+ id_count[idd] += i
32
+
33
+ it = enumerate(id_count.most_common(), start=1)
34
+ for i, (key, value) in it:
35
+ if value == 0:
36
+ break
37
+
38
+ print(i, key, value)
39
+ ```
40
+
41
+ pandasは書きなれていないので、多少ダサいコードだとは思います。