回答編集履歴
3
コピーミスの修正
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となる方が扱いやすいと思いますので修正
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
|
-
|
17
|
+
[1, '丹内', '高橋'],
|
14
18
|
|
15
|
-
|
19
|
+
[2, '菱田', '中野'],
|
16
20
|
|
17
|
-
|
21
|
+
[3, '大野', '松下'],
|
18
22
|
|
19
|
-
|
23
|
+
[5, '国分恭', '森田']],
|
20
24
|
|
21
|
-
|
25
|
+
columns=['チーム番号', '主担当', '副担当'])
|
22
26
|
|
23
27
|
tantou_df1['202002020202'] = pd.DataFrame([
|
24
28
|
|
25
|
-
|
29
|
+
[1, '藤岡', '林'],
|
26
30
|
|
27
|
-
|
31
|
+
[2, '秋山', '加藤'],
|
28
32
|
|
29
|
-
|
33
|
+
[3, '横山', '大竹'],
|
30
34
|
|
31
|
-
|
35
|
+
[10, '国分恭', '森田'],
|
32
36
|
|
33
|
-
|
37
|
+
[12, '丹内', '相沢']],
|
34
38
|
|
35
|
-
|
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
|
-
|
51
|
+
match_tantou1 = tantou_df1['202002020201'][tantou_df1['202002020201']['主担当'] == name]['チーム番号'].values
|
48
52
|
|
49
|
-
|
53
|
+
match_tantou2 = tantou_df1['202002020202'][tantou_df1['202002020202']['主担当'] == name]['チーム番号'].values
|
50
54
|
|
51
|
-
|
55
|
+
# ひとりの主担当が1つの担務に2回以上出現したら例外としてストップ
|
52
56
|
|
53
|
-
|
57
|
+
assert len(match_tantou1) <= 1 and len(match_tantou2) <= 1
|
54
58
|
|
55
|
-
|
59
|
+
# 主担当の担務記録を追加
|
56
60
|
|
57
|
-
|
61
|
+
matching.extend(match_tantou1)
|
58
62
|
|
59
|
-
|
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
|
-
|
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
|
-
|
91
|
+
2 国分恭 5.0 10.0
|
94
92
|
|
95
93
|
```
|
1
質問の修正にあわせました
test
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
|
5
5
|
```Python
|
6
6
|
|
7
|
-
#
|
7
|
+
# ataFrameは簡略化のため一部のみ作っています
|
8
8
|
|
9
|
-
|
9
|
+
tantou_df1 = {}
|
10
10
|
|
11
|
-
|
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
|
-
|
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_
|
47
|
+
match_tantou1 = tantou_df1['202002020201'][tantou_df1['202002020201']['主担当'] == name]['チーム番号'].values
|
48
48
|
|
49
|
-
match_
|
49
|
+
match_tantou2 = tantou_df1['202002020202'][tantou_df1['202002020202']['主担当'] == name]['チーム番号'].values
|
50
50
|
|
51
|
-
# ひとりの
|
51
|
+
# ひとりの主担当が1つの担務に2回以上出現したら例外としてストップ
|
52
52
|
|
53
|
-
assert len(match_
|
53
|
+
assert len(match_tantou1) <= 1 and len(match_tantou2) <= 1
|
54
54
|
|
55
|
-
# ひとりの
|
55
|
+
# ひとりの主担当が両方の担務に出ていなければリストには登録しない
|
56
56
|
|
57
|
-
if len(match_
|
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_
|
65
|
+
matching.extend(match_tantou1)
|
66
66
|
|
67
|
-
matching.extend(match_
|
67
|
+
matching.extend(match_tantou2)
|
68
68
|
|
69
69
|
result_list.append(matching)
|
70
70
|
|