.csvファイルのインプレイスを削除するコードを取得しようとしています。Pythonは重複を削除します。
def deleteDuplicate():
seen = set()
dupeCount = 0
counter = 0
with FileInput('DBA.csv', inplace=1) as f:
f, f_orig = tee(f)
for row, line in zip(csv.reader(f), f_orig):
if row[2] in seen:
dupeCount+=1
continue
seen.add(row[2])
counter+=1
print(line, end='')
print(counter)
print("Removed {} Duplicates".format(dupeCount))
上記のコードは次のように小さいテストスケールで重複を除去するための完璧な作品:
私は何をすべきかの提案を持って、このように見えるのコードになってしまった http://www.sharecsv.com/s/29ae855f20472de54b12fa66bbe3cbb9/DBA.csv見つけることができます
null,first,second,third
zero,one,two,three
null,first,second,third
nul,un,deux,trois
0,"1,one",2,3
大きな.csvファイルで実行すると、重複は完全になくなりますが、さらに4行が削除されてしまいます。削除された4行は私のdupeCountで追跡されないので、if文を起動するはずがありません。
私はitertoolsのtee()の使用方法が何であり、それがなぜ有益なのかよくわからないことを認めなければなりません。
私の2つの質問は次のとおりです。 deleteDuplicate()は、より大きな.csvファイルで4行を削除するのはなぜですか、なぜtee()とzipが使用されるのですか?データの最初の行で
これまでにティー機能は見たことがありません。 'pandas'モジュールには' drop_duplicates'メソッドがあり、これはあなたがここでやっていることとまったく同じです。代わりにそれを使用することを検討してください車輪を再発明することに意味がない。ここにあるドキュメンテーション:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html –
これをまだ見ていないと仮定すると、ここにはitertools.tee()のドキュメントがあります。 https://docs.python.org/2/library/itertools.html#itertools.tee – 16num
私はドキュメントを読み、zip()とtee()の両方を理解しています。私はちょうどここにそれを持つ利点を理解していない。 – Rainoa