質問編集履歴

17

少し編集

2021/05/06 18:51

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -202,7 +202,7 @@
202
202
 
203
203
 
204
204
 
205
- if df1.iat[bf] == df.iat[af] and df1iloc[i-1, 3] == np.nan:
205
+ if df.iat[bf] == df.iat[af] and df1iloc[i-1, 3] == np.nan:
206
206
 
207
207
  df.iloc[i-1, 3] = add
208
208
 
@@ -212,7 +212,7 @@
212
212
 
213
213
 
214
214
 
215
- df1.drop(del_list, inplace=True, errors='ignore')
215
+ df.drop(del_list, inplace=True, errors='ignore')
216
216
 
217
217
  print(df)
218
218
 

16

少し編集

2021/05/06 18:51

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -190,23 +190,23 @@
190
190
 
191
191
  del_list = []
192
192
 
193
- for i in range(len(df1)):
193
+ for i in range(len(df)):
194
194
 
195
195
  bf = i-1, 1
196
196
 
197
197
  af = i, 1
198
198
 
199
- add = df1.iloc[i, 2]
199
+ add = df.iloc[i, 2]
200
-
201
-
202
-
203
-
204
-
200
+
201
+
202
+
203
+
204
+
205
- if df1.iat[bf] == df1.iat[af] and df1.iloc[i-1, 3] == np.nan:
205
+ if df1.iat[bf] == df.iat[af] and df1iloc[i-1, 3] == np.nan:
206
-
206
+
207
- df1.iloc[i-1, 3] = add
207
+ df.iloc[i-1, 3] = add
208
-
208
+
209
- del_list.append(i)
209
+ de_list.append(i)
210
210
 
211
211
 
212
212
 
@@ -214,7 +214,7 @@
214
214
 
215
215
  df1.drop(del_list, inplace=True, errors='ignore')
216
216
 
217
- print(df1)
217
+ print(df)
218
218
 
219
219
 
220
220
 

15

少し編集

2021/05/06 18:50

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -178,7 +178,7 @@
178
178
 
179
179
  で、何とか①~③は出来たっぽいのですが
180
180
 
181
- ⑤の記述がよくわかりません。
181
+ ⑤の記述がよくわかりません。
182
182
 
183
183
 
184
184
 

14

現状

2021/05/06 18:49

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -138,39 +138,9 @@
138
138
 
139
139
 
140
140
 
141
- しかし現状の私のスキルでは、
141
+
142
-
143
-
144
-
145
- mig = df1.iat[2, 2]
142
+
146
-
147
- df1.iat[4+1, 2] = mig
148
-
149
-
150
-
151
- if df.iat[i,1] == df.iat[i-1,1]:
152
-
153
- など比較はなんとなくわかるレベルです...
154
-
155
-
156
-
157
- 現状で代入して行列を指定して文字をコピー追加する程度しか出来ていません..
158
-
159
- ①~⑤で何か良いヒントや参考になりそうな文献はないものでしょうか?
160
-
161
- また根本的に①~⑤で考え方が間違っている部分があるようならご指摘も受けたいです。
162
-
163
-
164
-
165
- 宜しくお願い致します。
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
- 追記
143
+ 現状
174
144
 
175
145
 
176
146
 
@@ -200,6 +170,12 @@
200
170
 
201
171
 
202
172
 
173
+
174
+
175
+
176
+
177
+
178
+
203
179
  で、何とか①~③は出来たっぽいのですが
204
180
 
205
181
  ①⑤の記述がよくわかりません。
@@ -210,6 +186,8 @@
210
186
 
211
187
 
212
188
 
189
+
190
+
213
191
  del_list = []
214
192
 
215
193
  for i in range(len(df1)):
@@ -242,4 +220,4 @@
242
220
 
243
221
  だとSyntaxError: invalid syntaxになってしまい。
244
222
 
245
- np.nan(NaN)が原因なのか and が原因なのかもわからない状態です
223
+ np.nan(NaN)が原因なのか and が原因なのかもわからない状態です

13

変更

2021/05/06 18:48

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -172,66 +172,74 @@
172
172
 
173
173
  【追記】
174
174
 
175
- ④⑤は① ~③をまず自己解決してelse:を調べてみようと思っており
175
+
176
-
176
+
177
- まず① ~③を自己解決しようと必死なのですが
177
+ del_list = []
178
-
179
-
180
178
 
181
179
  for i in range(len(df)):
182
180
 
181
+
182
+
183
- bf = i-1, 1
183
+ bf = i-1, 1
184
-
184
+
185
- af = i, 1
185
+ af = i, 1
186
+
186
-
187
+ add = df.iloc[i, 2]
188
+
189
+
190
+
187
- if df.iat[bf] == df.iat[af]:
191
+ if df.iat[bf] == df1.iat[af]:
192
+
193
+ df.iloc[i-1, 3] = add
194
+
195
+ del_list.append(i)
196
+
197
+ df.drop(del_list, inplace=True, errors='ignore')
188
198
 
189
199
  print(df)
190
200
 
191
201
 
192
202
 
193
- 、何とか処理できてるよう
203
+ で、何とか①~③は出来たっぽすが
194
-
195
- 重複した数の行数だけループでdfが表示されました。
204
+
196
-
197
- 比較処理出来ていると思
205
+ ①⑤の記述よくかりせん
198
-
199
-
200
-
206
+
207
+
208
+
209
+
210
+
211
+
212
+
201
- しかし、
213
+ del_list = []
202
-
203
-
204
-
214
+
205
- for i in range(len(df)):
215
+ for i in range(len(df1)):
206
-
216
+
207
- bf = i-1, 1
217
+ bf = i-1, 1
208
-
218
+
209
- af = i, 1
219
+ af = i, 1
210
-
220
+
211
- add = i-1,2 #追加したい文字の場所
221
+ add = df1.iloc[i, 2]
212
-
222
+
223
+
224
+
225
+
226
+
213
- if df.iat[bf] == df.iat[af]:
227
+ if df1.iat[bf] == df1.iat[af] and df1.iloc[i-1, 3] == np.nan:
214
-
228
+
215
- df.iloc[i-1, 3] = add #追加したい場所を指定して追加
229
+ df1.iloc[i-1, 3] = add
230
+
216
-
231
+ del_list.append(i)
232
+
233
+
234
+
235
+
236
+
217
-
237
+ df1.drop(del_list, inplace=True, errors='ignore')
218
-
238
+
219
- print(df)
239
+ print(df1)
220
-
221
-
222
-
223
- では
240
+
224
-
225
- ValueError: Must have equal len keys and value when setting with an iterable
241
+
226
-
227
- が出てしまいます。
242
+
228
-
229
-
230
-
231
- df.iloc[i-1, 3] = "add" 
232
-
233
- print(df)
234
-
235
-
236
-
237
- だと"add"の文字が指定した場所入るので、値だと反映されないのでしょうか?
243
+ だとSyntaxError: invalid syntaxになってしま
244
+
245
+ np.nan(NaN)が原因なのか and が原因なのかもわからない状態です

12

少し編集

2021/05/06 18:47

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -212,7 +212,7 @@
212
212
 
213
213
  if df.iat[bf] == df.iat[af]:
214
214
 
215
- df.iat[i-1, 3] = add #追加したい場所を指定して追加
215
+ df.iloc[i-1, 3] = add #追加したい場所を指定して追加
216
216
 
217
217
 
218
218
 
@@ -228,7 +228,7 @@
228
228
 
229
229
 
230
230
 
231
- df.iat[i-1, 3] = "add" 
231
+ df.iloc[i-1, 3] = "add" 
232
232
 
233
233
  print(df)
234
234
 

11

さらに追記

2021/05/06 17:09

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -225,3 +225,13 @@
225
225
  ValueError: Must have equal len keys and value when setting with an iterable
226
226
 
227
227
  が出てしまいます。
228
+
229
+
230
+
231
+ df.iat[i-1, 3] = "add" 
232
+
233
+ print(df)
234
+
235
+
236
+
237
+ だと"add"の文字が指定した場所に入るので、値だと反映されないのでしょうか?

10

少し編集

2021/05/06 17:06

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -150,11 +150,11 @@
150
150
 
151
151
  if df.iat[i,1] == df.iat[i-1,1]:
152
152
 
153
- など比較はなんとなくわかるレベルです...
153
+ など比較はなんとなくわかるレベルです...
154
-
155
-
156
-
154
+
155
+
156
+
157
- などの代入して行列を指定して文字をコピー追加する程度しか出来ていません..
157
+ 現状で代入して行列を指定して文字をコピー追加する程度しか出来ていません..
158
158
 
159
159
  ①~⑤で何か良いヒントや参考になりそうな文献はないものでしょうか?
160
160
 

9

追記しました

2021/05/06 16:42

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -172,7 +172,9 @@
172
172
 
173
173
  【追記】
174
174
 
175
+ ④⑤は① ~③をまず自己解決してelse:を調べてみようと思っており
176
+
175
- ① ~③を自己解決しようと必死なのですが
177
+ まず① ~③を自己解決しようと必死なのですが
176
178
 
177
179
 
178
180
 

8

追記編集

2021/05/06 16:41

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -182,8 +182,6 @@
182
182
 
183
183
  af = i, 1
184
184
 
185
- add = i-1,2
186
-
187
185
  if df.iat[bf] == df.iat[af]:
188
186
 
189
187
  print(df)
@@ -208,13 +206,11 @@
208
206
 
209
207
  af = i, 1
210
208
 
211
- add = i-1,2
209
+ add = i-1,2 #追加したい文字の場所
212
-
213
-
214
210
 
215
211
  if df.iat[bf] == df.iat[af]:
216
212
 
217
- df.iloc[i-1, 3] = add
213
+ df.iat[i-1, 3] = add #追加したい場所を指定して追加
218
214
 
219
215
 
220
216
 

7

追記

2021/05/06 16:38

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -186,9 +186,39 @@
186
186
 
187
187
  if df.iat[bf] == df.iat[af]:
188
188
 
189
+ print(df)
190
+
191
+
192
+
193
+ では、何とか処理できているようで、
194
+
195
+ 重複した数の行数だけループでdfが表示されました。
196
+
197
+ 比較処理が出来ていると思われます。
198
+
199
+
200
+
201
+ しかし、
202
+
203
+
204
+
205
+ for i in range(len(df)):
206
+
207
+ bf = i-1, 1
208
+
209
+ af = i, 1
210
+
211
+ add = i-1,2
212
+
213
+
214
+
215
+ if df.iat[bf] == df.iat[af]:
216
+
189
217
  df.iloc[i-1, 3] = add
190
218
 
219
+
220
+
191
- print(df1)
221
+ print(df)
192
222
 
193
223
 
194
224
 
@@ -197,13 +227,3 @@
197
227
  ValueError: Must have equal len keys and value when setting with an iterable
198
228
 
199
229
  が出てしまいます。
200
-
201
- ValueError: Must have equal len keys and value when setting with an iterable
202
-
203
- で調べるとSeriesを作成
204
-
205
- https://yolo.love/pandas/series/#1_Series
206
-
207
- という文献が出てきたのですが、
208
-
209
- このまま進んでよいものか迷っています。

6

少し編集

2021/05/06 16:36

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -176,7 +176,7 @@
176
176
 
177
177
 
178
178
 
179
- for i in range(len(df1)):
179
+ for i in range(len(df)):
180
180
 
181
181
  bf = i-1, 1
182
182
 
@@ -184,9 +184,9 @@
184
184
 
185
185
  add = i-1,2
186
186
 
187
- if df1.iat[bf] == df1.iat[af]:
187
+ if df.iat[bf] == df.iat[af]:
188
-
188
+
189
- df1.iloc[i-1, 3] = add
189
+ df.iloc[i-1, 3] = add
190
190
 
191
191
  print(df1)
192
192
 

5

追記しました

2021/05/06 16:27

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -163,3 +163,47 @@
163
163
 
164
164
 
165
165
  宜しくお願い致します。
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ 【追記】
174
+
175
+ ① ~③を自己解決しようと必死なのですが
176
+
177
+
178
+
179
+ for i in range(len(df1)):
180
+
181
+ bf = i-1, 1
182
+
183
+ af = i, 1
184
+
185
+ add = i-1,2
186
+
187
+ if df1.iat[bf] == df1.iat[af]:
188
+
189
+ df1.iloc[i-1, 3] = add
190
+
191
+ print(df1)
192
+
193
+
194
+
195
+ では
196
+
197
+ ValueError: Must have equal len keys and value when setting with an iterable
198
+
199
+ が出てしまいます。
200
+
201
+ ValueError: Must have equal len keys and value when setting with an iterable
202
+
203
+ で調べるとSeriesを作成
204
+
205
+ https://yolo.love/pandas/series/#1_Series
206
+
207
+ という文献が出てきたのですが、
208
+
209
+ このまま進んでよいものか迷っています。

4

if df.iat[i,1] == df.iat[i-1,1]: 追加

2021/05/06 16:25

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -148,6 +148,12 @@
148
148
 
149
149
 
150
150
 
151
+ if df.iat[i,1] == df.iat[i-1,1]:
152
+
153
+ など比較はなんとなくわかるレベルです天...
154
+
155
+
156
+
151
157
  などの代入して行列を指定して文字をコピー追加する程度しか出来ていません..
152
158
 
153
159
  ①~⑤で何か良いヒントや参考になりそうな文献はないものでしょうか?

3

NaNを空白(NaN)に変更

2021/05/06 15:50

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -128,9 +128,9 @@
128
128
 
129
129
  ③ 一つ上のC列(比較上側のC列)に②の値を追加
130
130
 
131
- ④ 但し、その一つ上のC列(比較上側のC列)がNaNでない場合はさらに横の比較上側のD列)に追加
131
+ ④ 但し、その一つ上のC列(比較上側のC列)が空白(NaNでない場合はさらに横の比較上側のD列)に追加
132
132
 
133
- ⑤ そのD列(比較上側のD列)もNaNでない場合はさらに横の比較上側のE列)に追加
133
+ ⑤ そのD列(比較上側のD列)も空白(NaNでない場合はさらに横の比較上側のE列)に追加
134
134
 
135
135
 
136
136
 

2

一部リンゴをバナナに変更

2021/05/06 15:24

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  本 店 いちご
30
30
 
31
- 芦屋店 りんご
31
+ 芦屋店 バナナ
32
32
 
33
33
  西宮店 りんご
34
34
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  本 店 いちご
62
62
 
63
- 芦屋店 りんご
63
+ 芦屋店 バナナ
64
64
 
65
65
  西宮店 りんご バナナ
66
66
 
@@ -90,7 +90,7 @@
90
90
 
91
91
  本 店 りんご バナナ みかん いちご
92
92
 
93
- 芦屋店 りんご
93
+ 芦屋店 バナナ
94
94
 
95
95
  西宮店 りんご バナナ
96
96
 

1

#を入れると文字が大きくなってしまったため

2021/05/06 15:22

投稿

eqeqe
eqeqe

スコア15

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  別のソフトに読み込ますときに【最終】の形にしないといけなくて
8
8
 
9
- 今はエクセルで手動で置換&行削除させていますがミスがあったりするので
9
+ 今はエクセルで手動で置換&行削除ていますがミスがあったりするので
10
10
 
11
11
  できれば自動化したいと思っています。
12
12
 
@@ -18,29 +18,29 @@
18
18
 
19
19
 
20
20
 
21
- #  A   B   C   D   E 
21
+  A   B   C   D   E 
22
22
 
23
- # 本 店 りんご
23
+ 本 店 りんご
24
24
 
25
- # 本 店 バナナ
25
+ 本 店 バナナ
26
26
 
27
- # 本 店 みかん
27
+ 本 店 みかん
28
28
 
29
- # 本 店 いちご
29
+ 本 店 いちご
30
30
 
31
- # 芦屋店 りんご
31
+ 芦屋店 りんご
32
32
 
33
- # 西宮店 りんご
33
+ 西宮店 りんご
34
34
 
35
- # 西宮店 バナナ
35
+ 西宮店 バナナ
36
36
 
37
- # 尼崎店 りんご
37
+ 尼崎店 りんご
38
38
 
39
- # 三宮店 りんご
39
+ 三宮店 りんご
40
40
 
41
- # 三宮店 バナナ
41
+ 三宮店 バナナ
42
42
 
43
- # 三宮店 みかん
43
+ 三宮店 みかん
44
44
 
45
45
 
46
46
 
@@ -50,29 +50,29 @@
50
50
 
51
51
 
52
52
 
53
- #  A   B   C   D   E 
53
+  A   B   C   D   E 
54
54
 
55
- # 本 店 りんご バナナ みかん いちご
55
+ 本 店 りんご バナナ みかん いちご
56
56
 
57
- # 本 店 バナナ
57
+ 本 店 バナナ
58
58
 
59
- # 本 店 みかん
59
+ 本 店 みかん
60
60
 
61
- # 本 店 いちご
61
+ 本 店 いちご
62
62
 
63
- # 芦屋店 りんご
63
+ 芦屋店 りんご
64
64
 
65
- # 西宮店 りんご バナナ
65
+ 西宮店 りんご バナナ
66
66
 
67
- # 西宮店 バナナ
67
+ 西宮店 バナナ
68
68
 
69
- # 尼崎店 りんご
69
+ 尼崎店 りんご
70
70
 
71
- # 三宮店 りんご バナナ みかん
71
+ 三宮店 りんご バナナ みかん
72
72
 
73
- # 三宮店 バナナ
73
+ 三宮店 バナナ
74
74
 
75
- # 三宮店 みかん
75
+ 三宮店 みかん
76
76
 
77
77
 
78
78
 
@@ -86,15 +86,15 @@
86
86
 
87
87
 
88
88
 
89
- #  A   B   C   D   E 
89
+  A   B   C   D   E 
90
90
 
91
- # 本 店 りんご バナナ みかん いちご
91
+ 本 店 りんご バナナ みかん いちご
92
92
 
93
- # 芦屋店 りんご
93
+ 芦屋店 りんご
94
94
 
95
- # 西宮店 りんご バナナ
95
+ 西宮店 りんご バナナ
96
96
 
97
- # 三宮店 りんご バナナ みかん
97
+ 三宮店 りんご バナナ みかん
98
98
 
99
99
 
100
100