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

回答編集履歴

2

対策例を記載

2020/12/26 11:26

投稿

siruku6
siruku6

スコア1382

answer CHANGED
@@ -1,5 +1,75 @@
1
- ちょっと読み間違えていたので修正しま
1
+ 修正しました
2
2
 
3
+ list2, list5 の配列の形状が特殊なので、list3 list4 とは別に処理した方がよさそうです。
4
+
5
+ 雑に直してみたサンプルは以下のような形です。
6
+
7
+ ```python
8
+ list1=[
9
+ ['A'], ['B'], ['C']
10
+ ]
11
+ list2=[
12
+ [
13
+ '2020年11月28日(土)',
14
+ '2020年11月27日(金)',
15
+ '2020年11月26日(木)',
16
+ '2020年11月25日(水)'
17
+ ], [
18
+ '2020年08月15日(土)',
19
+ '2020年08月14日(金)',
20
+ '2020年08月13日(木)',
21
+ '2020年08月12日(水)',
22
+ '2020年08月11日(火)',
23
+ '2020年08月10日(月)',
24
+ '2020年08月09日(日)'
25
+ ], [
26
+ '2020年08月16日(日)'
27
+ ]
28
+ ]
29
+ list3=[
30
+ ['10:00'], ['10:00'], ['10:00'], ['11:00'], ['07:00'], ['07:00'], ['07:00'], ['07:00'], ['07:00'], ['07:00'], ['07:00'], ['13:00']
31
+ ]
32
+ list4=[
33
+ ['17:00'], ['18:00'], ['18:00'], ['18:00'], ['13:00'], ['13:00'], ['13:00'], ['13:00'], ['13:00'], ['13:00'], ['13:00'], ['21:00']
34
+ ]
35
+ list5=[
36
+ ['受付中', '締切済み', '締切済み', '締切済み'], ['締切済み', '締切済み', '締切済み', '締切済み', '締切済み', '締切済み', '締切済み'], ['締切済み']
37
+ ]
38
+
39
+ dfm = pd.DataFrame()
40
+ for i in range(len(list2)):
41
+ df = pd.DataFrame([[w, z] for w ,z in zip(list2[i], list5[i])])
42
+ df.insert(0, '', list1[i][0])
43
+ dfm = pd.concat([dfm, df])
44
+
45
+ dfm.columns = ['項目名', '開催日', '状況']
46
+ dfm['開始時間'] = list3
47
+ dfm['終了時間'] = list4
48
+ print(dfm)
49
+ ```
50
+ この場合、以下の結果が得られました
51
+
52
+ ```
53
+ 項目名 開催日 状況 開始時間 終了時間
54
+ 0 A 2020年11月28日(土) 受付中 [10:00] [17:00]
55
+ 1 A 2020年11月27日(金) 締切済み [10:00] [18:00]
56
+ 2 A 2020年11月26日(木) 締切済み [10:00] [18:00]
57
+ 3 A 2020年11月25日(水) 締切済み [11:00] [18:00]
58
+ 0 B 2020年08月15日(土) 締切済み [07:00] [13:00]
59
+ 1 B 2020年08月14日(金) 締切済み [07:00] [13:00]
60
+ 2 B 2020年08月13日(木) 締切済み [07:00] [13:00]
61
+ 3 B 2020年08月12日(水) 締切済み [07:00] [13:00]
62
+ 4 B 2020年08月11日(火) 締切済み [07:00] [13:00]
63
+ 5 B 2020年08月10日(月) 締切済み [07:00] [13:00]
64
+ 6 B 2020年08月09日(日) 締切済み [07:00] [13:00]
65
+ 0 C 2020年08月16日(日) 締切済み [13:00] [21:00]
66
+ ```
67
+
68
+ 元データの形状が一致していないので、まずはそれを合わせる処理を書くのが良いのではないかと感じました。
69
+ また、list3 list4 は、配列の中に要素が一つしかない配列が入っていますが、可能であれば、内側の配列は、単なる1つの文字列にした方が結果がきれいにしやすそうです。
70
+
3
71
  ---
4
72
 
73
+ # 補
74
+
5
75
  というのと、質問文内のソースコードの上下にバックスラッシュをつけて、インデントが反映されるようにしておきましょう

1

修正

2020/12/26 11:26

投稿

siruku6
siruku6

スコア1382

answer CHANGED
@@ -1,33 +1,5 @@
1
- list2が2次元配列になっていので、`for i in range(len(list2)):`の1ループだけでは求める結果にならないでね。
1
+ ちょと読み間違えていので修正しま
2
2
 
3
- ```python
4
- list2=[
5
- [
6
- '2020年11月28日(土)',
7
- '2020年11月27日(金)',
8
- '2020年11月26日(木)',
9
- '2020年11月25日(水)'
10
- ], [
11
- '2020年08月15日(土)',
12
- '2020年08月14日(金)',
13
- '2020年08月13日(木)',
14
- '2020年08月12日(水)',
15
- '2020年08月11日(火)',
16
- '2020年08月10日(月)',
17
- '2020年08月09日(日)'
18
- ], [
19
- '2020年08月16日(日)'
20
- ]
21
- ]
22
- ```
23
- こういう状態です。
24
-
25
- このlist2は長さ3ですので、3回しかループしていません。
26
-
27
- 他の誰かが回答を書いてしまうかもしれませんが....この状態を見て自分で試行錯誤されてみて、また行き詰まったら質問を修正追記されてみてはいかがでしょう?
28
-
29
3
  ---
30
4
 
31
- # 補
32
-
33
5
  というのと、質問文内のソースコードの上下にバックスラッシュをつけて、インデントが反映されるようにしておきましょう