質問編集履歴
4
変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -136,14 +136,12 @@
|
|
136
136
|
|
137
137
|
|
138
138
|
|
139
|
-
#カンマをリスト変換
|
140
|
-
|
141
139
|
df['qty2'] = df['qty2'].astype(str).str.replace(' ', ',')
|
142
140
|
|
141
|
+
df['qty2'] = df['qty2'].str.split(',')
|
142
|
+
|
143
143
|
df['qty2'] = df['qty2'].astype(str).str.replace("'", '')
|
144
144
|
|
145
|
-
|
146
|
-
|
147
145
|
df = df.explode(['lot','qty2'])
|
148
146
|
|
149
147
|
print(df)
|
@@ -182,8 +180,6 @@
|
|
182
180
|
|
183
181
|
|
184
182
|
|
185
|
-
|
186
|
-
|
187
183
|
File "C:\Users****\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 8254, in explode
|
188
184
|
|
189
185
|
raise ValueError("columns must have matching element counts")
|
3
変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,6 +112,104 @@
|
|
112
112
|
|
113
113
|
|
114
114
|
|
115
|
+
追記:10/20
|
116
|
+
|
117
|
+
パターン2で出力ができませんでした。
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
```Python
|
124
|
+
|
125
|
+
#半角をカンマにする
|
126
|
+
|
127
|
+
df['lot'] = df['lot'].str.replace(' ', ',')
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
#カンマをリストに変換
|
132
|
+
|
133
|
+
df['lot'] = df['lot'].str.split(',')
|
134
|
+
|
135
|
+
df['lot'] = df['lot'].str.split(',')
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
#カンマをリスト変換
|
140
|
+
|
141
|
+
df['qty2'] = df['qty2'].astype(str).str.replace(' ', ',')
|
142
|
+
|
143
|
+
df['qty2'] = df['qty2'].astype(str).str.replace("'", '')
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
df = df.explode(['lot','qty2'])
|
148
|
+
|
149
|
+
print(df)
|
150
|
+
|
151
|
+
出力結果
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
type title order ship qty1 lot qty2 adj Price
|
156
|
+
|
157
|
+
0 P001 Z001 1 0 1 [811] [1] NaN
|
158
|
+
|
159
|
+
1 P002 Z002 1 0 1 [768] [1] NaN
|
160
|
+
|
161
|
+
2 P003 Z003 1 0 1 [063] [1] NaN
|
162
|
+
|
163
|
+
3 P004 Z004 6 0 6 [193] [6] NaN
|
164
|
+
|
165
|
+
4 P005 Z005 4 0 4 [210] [4] NaN
|
166
|
+
|
167
|
+
5 P006 Z006 2 0 2 [385] [2] NaN
|
168
|
+
|
169
|
+
6 P007 Z007 2 0 2 [277] [2] NaN
|
170
|
+
|
171
|
+
7 P008 Z008 2 0 2 [211] [2] NaN
|
172
|
+
|
173
|
+
8 P009 Z009 2 0 2 [295] [2] NaN
|
174
|
+
|
175
|
+
9 P010 Z010 2 0 2 [576] [2] NaN
|
176
|
+
|
177
|
+
10 P011 Z011 2 0 2 [675] [2] NaN
|
178
|
+
|
179
|
+
11 P012 Z012 6 0 6 [796, 310] [5,1] NaN
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
File "C:\Users****\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 8254, in explode
|
188
|
+
|
189
|
+
raise ValueError("columns must have matching element counts")
|
190
|
+
|
191
|
+
ValueError: columns must have matching element counts
|
192
|
+
|
193
|
+
```
|
194
|
+
|
195
|
+
エラーになります。
|
196
|
+
|
197
|
+
explodeのリストが効いていないようです。
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
最初に頂いたご回答を機能させるためにはどうすればよろしいでしょうか。
|
202
|
+
|
203
|
+
ちなみに
|
204
|
+
|
205
|
+
df.explode('lot')
|
206
|
+
|
207
|
+
は分かれてくれますが、
|
208
|
+
|
209
|
+
df.explode('qty2')
|
210
|
+
|
211
|
+
の場合、変化がありません。
|
212
|
+
|
115
213
|
|
116
214
|
|
117
215
|
|
2
細かい文字の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
パターン2
|
44
44
|
|
45
|
-
shipが総合数になっていて、lotとqtyがテーブル内で同じ枠にある時、
|
45
|
+
shipが総合数になっていて、lotとqtyがテーブル内で同じ枠(セル?)にある時、方法を考え
|
46
46
|
|
47
47
|
explodeメソッドでリストを展開させていたのですが、
|
48
48
|
|
1
パターン2の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,6 +9,12 @@
|
|
9
9
|
よろしければ教示願います。
|
10
10
|
|
11
11
|
|
12
|
+
|
13
|
+
※10/19パターン2追記あり
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
パターン1(こちらは解決しました)
|
12
18
|
|
13
19
|
|P001|Z001|568|5
|
14
20
|
|
@@ -29,6 +35,80 @@
|
|
29
35
|
|P001|Z001|568|1
|
30
36
|
|
31
37
|
|P001|Z001|568|1
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
パターン2
|
44
|
+
|
45
|
+
shipが総合数になっていて、lotとqtyがテーブル内で同じ枠にある時、
|
46
|
+
|
47
|
+
explodeメソッドでリストを展開させていたのですが、
|
48
|
+
|
49
|
+
```Python
|
50
|
+
|
51
|
+
#explodeメソッドでリストを展開させる
|
52
|
+
|
53
|
+
df = df.explode('lot')
|
54
|
+
|
55
|
+
```
|
56
|
+
|
57
|
+
|type|title|ship|lot|qty
|
58
|
+
|
59
|
+
|:--|:--:|:--:|--:|
|
60
|
+
|
61
|
+
|P001|Z001|6|568,555|5,1
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
↓
|
66
|
+
|
67
|
+
|type|title|ship|lot|qty
|
68
|
+
|
69
|
+
|:--|:--:|:--:|--:|
|
70
|
+
|
71
|
+
|P001|Z001|6|568|5,1|:--|:--:|:--:|--:|
|
72
|
+
|
73
|
+
|P001|Z001|6|555|5,1
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
これだとlotは分かれますが、qtyが複製されどれを乗算指示すればいいのかが
|
78
|
+
|
79
|
+
分かりません。shipを元に判定してもいいですし、
|
80
|
+
|
81
|
+
568 を×5
|
82
|
+
|
83
|
+
555を×1にしたいです。
|
84
|
+
|
85
|
+
このとき、type title shipは複製されてかまいません。
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
【理想形です】
|
90
|
+
|
91
|
+
|type|title|ship|lot|qty
|
92
|
+
|
93
|
+
|:--|:--:|:--:|--:|
|
94
|
+
|
95
|
+
|P001|Z001|6|568|1|:--|:--:|:--:|--:|
|
96
|
+
|
97
|
+
|P001|Z001|6|568|1|:--|:--:|:--:|--:|
|
98
|
+
|
99
|
+
|P001|Z001|6|568|1|:--|:--:|:--:|--:|
|
100
|
+
|
101
|
+
|P001|Z001|6|568|1|:--|:--:|:--:|--:|
|
102
|
+
|
103
|
+
|P001|Z001|6|568|1|:--|:--:|:--:|--:|
|
104
|
+
|
105
|
+
|P001|Z001|6|555|1
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
教示お願い致します。
|
32
112
|
|
33
113
|
|
34
114
|
|