簡體   English   中英

從csv文件中的多行中提取唯一值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM