回答編集履歴

3

コピーミスの修正

2020/09/27 02:56

投稿

toast-uz
toast-uz

スコア3266

test CHANGED
@@ -58,6 +58,8 @@
58
58
 
59
59
  # 主担当の担務記録を追加
60
60
 
61
+ matching = [name]
62
+
61
63
  matching.extend(match_tantou1)
62
64
 
63
65
  matching.extend(match_tantou2)

2

マッチしなければNaNとなる方が扱いやすいと思いますので修正

2020/09/27 02:56

投稿

toast-uz
toast-uz

スコア3266

test CHANGED
@@ -4,35 +4,39 @@
4
4
 
5
5
  ```Python
6
6
 
7
+ import pandas as pd
8
+
9
+
10
+
7
- # ataFrameは簡略化のため一部のみ作っています
11
+ # DataFrameは簡略化のため一部のみ作っています
8
12
 
9
13
  tantou_df1 = {}
10
14
 
11
15
  tantou_df1['202002020201'] = pd.DataFrame([
12
16
 
13
- [1, '丹内', '高橋'],
17
+ [1, '丹内', '高橋'],
14
18
 
15
- [2, '菱田', '中野'],
19
+ [2, '菱田', '中野'],
16
20
 
17
- [3, '大野', '松下'],
21
+ [3, '大野', '松下'],
18
22
 
19
- [5, '国分恭', '森田']],
23
+ [5, '国分恭', '森田']],
20
24
 
21
- columns=['チーム番号', '主担当', '副担当'])
25
+ columns=['チーム番号', '主担当', '副担当'])
22
26
 
23
27
  tantou_df1['202002020202'] = pd.DataFrame([
24
28
 
25
- [1, '藤岡', '林'],
29
+ [1, '藤岡', '林'],
26
30
 
27
- [2, '秋山', '加藤'],
31
+ [2, '秋山', '加藤'],
28
32
 
29
- [3, '横山', '大竹'],
33
+ [3, '横山', '大竹'],
30
34
 
31
- [10, '国分恭', '森田'],
35
+ [10, '国分恭', '森田'],
32
36
 
33
- [12, '丹内', '相沢']],
37
+ [12, '丹内', '相沢']],
34
38
 
35
- columns=['チーム番号', '主担当', '副担当'])
39
+ columns=['チーム番号', '主担当', '副担当'])
36
40
 
37
41
  matching_list = ['丹内', '武', '国分恭'] # 確認のため、存在しない主担当も入れる
38
42
 
@@ -42,31 +46,23 @@
42
46
 
43
47
  for name in matching_list:
44
48
 
45
- # それぞれの担務から主担当に一致するチーム番号のリストを抽出する
49
+ # それぞれの担務から主担当に一致するチーム番号のリストを抽出する
46
50
 
47
- match_tantou1 = tantou_df1['202002020201'][tantou_df1['202002020201']['主担当'] == name]['チーム番号'].values
51
+ match_tantou1 = tantou_df1['202002020201'][tantou_df1['202002020201']['主担当'] == name]['チーム番号'].values
48
52
 
49
- match_tantou2 = tantou_df1['202002020202'][tantou_df1['202002020202']['主担当'] == name]['チーム番号'].values
53
+ match_tantou2 = tantou_df1['202002020202'][tantou_df1['202002020202']['主担当'] == name]['チーム番号'].values
50
54
 
51
- # ひとりの主担当が1つの担務に2回以上出現したら例外としてストップ
55
+ # ひとりの主担当が1つの担務に2回以上出現したら例外としてストップ
52
56
 
53
- assert len(match_tantou1) <= 1 and len(match_tantou2) <= 1
57
+ assert len(match_tantou1) <= 1 and len(match_tantou2) <= 1
54
58
 
55
- # ひとりの主担当が両方の担務に出ていなければリストには登しない
59
+ # 主担当の担務を追加
56
60
 
57
- if len(match_tantou1) == 0 and len(match_tantou2) == 0:
61
+ matching.extend(match_tantou1)
58
62
 
59
- continue
63
+ matching.extend(match_tantou2)
60
64
 
61
- # 主担当の担務記録を追加
62
-
63
- matching = [name]
64
-
65
- matching.extend(match_tantou1)
66
-
67
- matching.extend(match_tantou2)
68
-
69
- result_list.append(matching)
65
+ result_list.append(matching)
70
66
 
71
67
 
72
68
 
@@ -86,10 +82,12 @@
86
82
 
87
83
  ```
88
84
 
89
- 0 1 2
85
+ 0 1 2
90
86
 
91
- 0 丹内 1 12
87
+ 0 丹内 1.0 12.0
92
88
 
89
+ 1 武 NaN NaN
90
+
93
- 1 国分恭 5 10
91
+ 2 国分恭 5.0 10.0
94
92
 
95
93
  ```

1

質問の修正にあわせました

2020/09/27 02:53

投稿

toast-uz
toast-uz

スコア3266

test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  ```Python
6
6
 
7
- # レースのDataFrameは簡略化のため一部のみ作っています
7
+ # ataFrameは簡略化のため一部のみ作っています
8
8
 
9
- race_df1 = {}
9
+ tantou_df1 = {}
10
10
 
11
- race_df1['202002020201'] = pd.DataFrame([
11
+ tantou_df1['202002020201'] = pd.DataFrame([
12
12
 
13
- [1, '丹内', '高橋'],
13
+ [1, '丹内', '高橋'],
14
14
 
15
15
  [2, '菱田', '中野'],
16
16
 
@@ -18,23 +18,23 @@
18
18
 
19
19
  [5, '国分恭', '森田']],
20
20
 
21
- columns=['番', '騎手', '厩舎'])
21
+ columns=['チーム', '主担当', '副担当'])
22
22
 
23
- race_df1['202002020202'] = pd.DataFrame([
23
+ tantou_df1['202002020202'] = pd.DataFrame([
24
24
 
25
- [1, '藤岡', '林'],
25
+ [1, '藤岡', '林'],
26
26
 
27
- [2, '秋山', '加藤'],
27
+ [2, '秋山', '加藤'],
28
28
 
29
- [3, '横山', '大竹'],
29
+ [3, '横山', '大竹'],
30
30
 
31
31
  [10, '国分恭', '森田'],
32
32
 
33
33
  [12, '丹内', '相沢']],
34
34
 
35
- columns=['番', '騎手', '厩舎'])
35
+ columns=['チーム', '主担当', '副担当'])
36
36
 
37
- matching_list = ['丹内', '武', '国分恭'] # 確認のため、存在しない騎手も入れる
37
+ matching_list = ['丹内', '武', '国分恭'] # 確認のため、存在しない主担当も入れる
38
38
 
39
39
 
40
40
 
@@ -42,29 +42,29 @@
42
42
 
43
43
  for name in matching_list:
44
44
 
45
- # それぞれのレースから騎手に一致する番のリストを抽出する
45
+ # それぞれの担務から主担当に一致するチームのリストを抽出する
46
46
 
47
- match_race1 = race_df1['202002020201'][race_df1['202002020201']['騎手'] == name]['番'].values
47
+ match_tantou1 = tantou_df1['202002020201'][tantou_df1['202002020201']['主担当'] == name]['チーム'].values
48
48
 
49
- match_race2 = race_df1['202002020202'][race_df1['202002020202']['騎手'] == name]['番'].values
49
+ match_tantou2 = tantou_df1['202002020202'][tantou_df1['202002020202']['主担当'] == name]['チーム'].values
50
50
 
51
- # ひとりの騎手が1つのレースに2回以上出現したら例外としてストップ
51
+ # ひとりの主担当が1つの担務に2回以上出現したら例外としてストップ
52
52
 
53
- assert len(match_race1) <= 1 and len(match_race2) <= 1
53
+ assert len(match_tantou1) <= 1 and len(match_tantou2) <= 1
54
54
 
55
- # ひとりの騎手が両方のレースに出ていなければリストには登録しない
55
+ # ひとりの主担当が両方の担務に出ていなければリストには登録しない
56
56
 
57
- if len(match_race1) == 0 and len(match_race2) == 0:
57
+ if len(match_tantou1) == 0 and len(match_tantou2) == 0:
58
58
 
59
59
  continue
60
60
 
61
- # 騎手出場記録を追加
61
+ # 主担当担務記録を追加
62
62
 
63
63
  matching = [name]
64
64
 
65
- matching.extend(match_race1)
65
+ matching.extend(match_tantou1)
66
66
 
67
- matching.extend(match_race2)
67
+ matching.extend(match_tantou2)
68
68
 
69
69
  result_list.append(matching)
70
70