質問編集履歴

4

再度 前提と修正しました

2021/07/24 10:39

投稿

dub
dub

スコア23

test CHANGED
File without changes
test CHANGED
@@ -38,6 +38,8 @@
38
38
 
39
39
  (りんご、バナナが元のファイルと重複している。
40
40
 
41
+ りんごのように元データでりんご、追加データでアップルと商品名が異なる場合もあるのがJANコードが重複していればスキップしたい(行の完全一致ではないので、pandas のdrop_duplicatesでは難しいかも・・)
42
+
41
43
 
42
44
 
43
45
  |列4(商品名)|列15(JANコード)|
@@ -46,7 +48,7 @@
46
48
 
47
49
  |きゅうり|5555555|
48
50
 
49
- |りんご|111111|
51
+ |アップル|111111|
50
52
 
51
53
  |バナナ|バーコードなし|
52
54
 

3

自分で実行したコードを修正しました

2021/07/24 10:39

投稿

dub
dub

スコア23

test CHANGED
File without changes
test CHANGED
@@ -120,9 +120,9 @@
120
120
 
121
121
 
122
122
 
123
- df2 = pd.read_csv("./元データ.csv", encoding="cp932",header=None)
123
+ df1 = pd.read_csv("./元データ.csv", encoding="cp932",header=None)
124
124
 
125
- df1 = pd.read_csv("./追加データ.csv", encoding="cp932",header=None)
125
+ df2 = pd.read_csv("./追加データ.csv", encoding="cp932",header=None)
126
126
 
127
127
 
128
128
 
@@ -132,26 +132,20 @@
132
132
 
133
133
  save_csv='./元データ.csv'
134
134
 
135
+ for x in df2.iloc[:, 15]:
135
136
 
137
+ if x in df1.iloc[:, 15]:
136
138
 
137
- for row in df2.iterrows() : #← df2.iloc[:, 4] とdf2.iloc[:, 15]を参照したいのですがどうやって取り出せばいいのかわかりません
139
+ continue
138
140
 
139
- for row2 in df1.iterrows() :
141
+
140
-
141
- if row in row2:
142
-
143
- print(row) ← 重複してCSVに追記されないデータを出力
144
-
145
- continue
146
142
 
147
143
  else:
148
144
 
149
-      #元データに重複する値(列4、列15参照)がない行のみ、追加ファイルの行を元エータに追記する
150
-
151
- with open(save_csv, 'a',encoding ='cp932') as f:
145
+ with open(df1, 'a',encoding ='cp932') as f:
152
146
 
153
147
  writer = csv.writer(f)
154
148
 
155
- writer.writerow(df2.iterrows())
149
+ writer.writerow(df2.iterrows())#xが含まれる行を1行ずつ取り出す方法がわからない
156
150
 
157
151
  ```

2

説明文の追記

2021/07/24 10:34

投稿

dub
dub

スコア23

test CHANGED
File without changes
test CHANGED
@@ -59,6 +59,12 @@
59
59
  結合したい(元ファイルに追記したい)
60
60
 
61
61
  きゅうり、なす の重複していない行のみを元ファイルに追記したい(順次保存)
62
+
63
+ バーコードで重複チェックだけだと
64
+
65
+ バーコードが存在しないデータ(バナナ)が重複する可能性があるため
66
+
67
+ 名前での一致でも重複したデータはスキップしたいです
62
68
 
63
69
  |列4(商品名)|列15(JANコード)|
64
70
 

1

コード修正

2021/07/24 05:02

投稿

dub
dub

スコア23

test CHANGED
File without changes
test CHANGED
@@ -146,6 +146,6 @@
146
146
 
147
147
  writer = csv.writer(f)
148
148
 
149
- writer.writerow(save_csv)
149
+ writer.writerow(df2.iterrows())
150
150
 
151
151
  ```