繁体   English   中英

Python:将唯一值从 CSV 列添加到列表

[英]Python: Add unique values from a CSV column to list

我正在查看一个 CSV ,其中列出了各个港口之间的货物运输清单,我想将港口的所有唯一值放入一个新列表中。

目前,我有以下内容,它在“原始端口”列下添加了每个值,我如何确保它只在该列下添加唯一值? 谢谢你。

import csv

CSV_FILE = "Bitumen2021Exports.csv"

ports = []
  
with open(CSV_FILE, encoding="utf-8-sig") as bitumen_csv:
    bitumen_reader = csv.DictReader(bitumen_csv)
    for port in bitumen_reader:
        ports.append(port['ORIGIN PORT'])

print(ports)

CSV 中的数据如下所示: 在此处输入图像描述

基于您的代码的一种方法:

import csv

CSV_FILE = "Bitumen2021Exports.csv"

ports = []
  
with open(CSV_FILE, encoding="utf-8-sig") as bitumen_csv:
    bitumen_reader = csv.DictReader(bitumen_csv)
    for port in bitumen_reader:
        if port['ORIGIN PORTS'] not in ports:
              ports.append(port['ORIGIN PORTS'])

print(ports)

另一种方法是将 csv 导入pandas df 并使用column.unique()

您也可以跳过处理“唯一性逻辑”并使用 Python 的set ,它只允许唯一元素:

import csv

CSV_FILE = "Bitumen2021Exports.csv"

ports = set()
  
with open(CSV_FILE, encoding="utf-8-sig") as bitumen_csv:
    bitumen_reader = csv.DictReader(bitumen_csv)
    for port in bitumen_reader:
          ports.add(port['ORIGIN PORTS'])

print(ports)

Ports 是一个集合,是一个可迭代的,或者如果需要,可以转换为一个列表list(ports)

一个小的变化来展示如何使用集合理解:

import csv

CSV_FILE = "Bitumen2021Exports.csv"
  
with open(CSV_FILE, encoding="utf-8-sig") as bitumen_csv:
    ports = {port['ORIGIN PORT'] for port in csv.DictReader(bitumen_csv)}
    print(ports)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM