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

質問編集履歴

4

再度 前提と修正しました

2021/07/24 10:39

投稿

dub
dub

スコア24

title CHANGED
File without changes
body CHANGED
@@ -18,11 +18,12 @@
18
18
 
19
19
  追加ファイル.csv
20
20
  (りんご、バナナが元のファイルと重複している。
21
+ りんごのように元データでりんご、追加データでアップルと商品名が異なる場合もあるのがJANコードが重複していればスキップしたい(行の完全一致ではないので、pandas のdrop_duplicatesでは難しいかも・・)
21
22
 
22
23
  |列4(商品名)|列15(JANコード)|
23
24
  |:--|:--:|
24
25
  |きゅうり|5555555|
25
- |りんご|111111|
26
+ |アップル|111111|
26
27
  |バナナ|バーコードなし|
27
28
  |なす|666666|
28
29
 

3

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

2021/07/24 10:39

投稿

dub
dub

スコア24

title CHANGED
File without changes
body CHANGED
@@ -59,21 +59,18 @@
59
59
  ```python
60
60
  import pandas as pd
61
61
 
62
- df2 = pd.read_csv("./元データ.csv", encoding="cp932",header=None)
62
+ df1 = pd.read_csv("./元データ.csv", encoding="cp932",header=None)
63
- df1 = pd.read_csv("./追加データ.csv", encoding="cp932",header=None)
63
+ df2 = pd.read_csv("./追加データ.csv", encoding="cp932",header=None)
64
64
 
65
65
  import csv
66
66
 
67
67
  save_csv='./元データ.csv'
68
-
69
- for row in df2.iterrows() : #← df2.iloc[:, 4] とdf2.iloc[:, 15]を参照したいのですがどうやって取り出せばいいのかわかりません
70
- for row2 in df1.iterrows() :
68
+ for x in df2.iloc[:, 15]:
71
- if row in row2:
69
+ if x in df1.iloc[:, 15]:
72
- print(row) ← 重複してCSVに追記されないデータを出力
73
- continue
70
+ continue
71
+
74
72
  else:
75
-      #元データに重複する値(列4、列15参照)がない行のみ、追加ファイルの行を元エータに追記する
76
- with open(save_csv, 'a',encoding ='cp932') as f:
73
+ with open(df1, 'a',encoding ='cp932') as f:
77
74
  writer = csv.writer(f)
78
- writer.writerow(df2.iterrows())
75
+ writer.writerow(df2.iterrows())#xが含まれる行を1行ずつ取り出す方法がわからない
79
76
  ```

2

説明文の追記

2021/07/24 10:34

投稿

dub
dub

スコア24

title CHANGED
File without changes
body CHANGED
@@ -29,6 +29,9 @@
29
29
  ##追記後のファイルイメージ
30
30
  結合したい(元ファイルに追記したい)
31
31
  きゅうり、なす の重複していない行のみを元ファイルに追記したい(順次保存)
32
+ バーコードで重複チェックだけだと
33
+ バーコードが存在しないデータ(バナナ)が重複する可能性があるため
34
+ 名前での一致でも重複したデータはスキップしたいです
32
35
  |列4(商品名)|列15(JANコード)|
33
36
  |:--|:--:|
34
37
  |りんご|#111111|

1

コード修正

2021/07/24 05:02

投稿

dub
dub

スコア24

title CHANGED
File without changes
body CHANGED
@@ -72,5 +72,5 @@
72
72
       #元データに重複する値(列4、列15参照)がない行のみ、追加ファイルの行を元エータに追記する
73
73
  with open(save_csv, 'a',encoding ='cp932') as f:
74
74
  writer = csv.writer(f)
75
- writer.writerow(save_csv)
75
+ writer.writerow(df2.iterrows())
76
76
  ```