[英]Extracting unique values from multiple rows in csv file
我有房地產數據 csv 文件。 行中有很多重復的信息,如下例所示:
Row1:
Su baldais, Skalbimo mašina, **Viryklė**, **Indaplovė**, Vonia
Row2
Virtuvės komplektas, **Viryklė**, **Indaplovė**, Dušo kabina, Rekuperacinė sistema
如您所見,有很多數據在重復(我用星號標記)。 有沒有辦法用 python 從所有行中只獲取唯一值?
目前還不完全清楚你想要什么,所以我將包括兩個場景:
您在 cwd 中作為example.csv
的數據:
Su baldais,Skalbimo mašina,Viryklė,Indaplovė,Vonia
Virtuvės komplektas,Viryklė,Indaplovė,Dušo kabina,Rekuperacinė sistema
方案 1
您需要出現在 csv 中的每個值,但不希望任何值超過一次。 一個集合的完美用例,每個值只存儲一次。
#!/usr/bin/env python3
import csv
unique_values = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
unique_values.update(row)
print(", ".join(unique_values))
結果:
Skalbimo mašina, Dušo kabina, Rekuperacinė sistema, Su baldais, Indaplovė, Virtuvės komplektas, Viryklė, Vonia
方案 2
您只需要 csv 中的唯一值,丟棄任何出現多次的值。
#!/usr/bin/env python3
import csv
all_values = set()
to_delete = set()
with open("example.csv") as handle:
reader = csv.reader(handle)
for row in reader:
for value in row:
if value in all_values:
to_delete.add(value)
else:
all_values.add(value)
print(", ".join(all_values - to_delete))
這里我使用了兩個集合,第二個集合稱為to_delete
,它包含我們多次看到的任何值。 我運行all_values - to_delete
只給我一組完全唯一的值。
結果:
Dušo kabina, Su baldais, Virtuvės komplektas, Skalbimo mašina, Vonia, Rekuperacinė sistema
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.