如何将列的第一个元素与Python中CSV文件中的其他元素进行比较?

2024-09-28 17:16:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一列的第一个元素与同一列和下一列的其他元素进行比较,并打印只在两列中出现一次的元素及其对应列中的值。例如:

Col1   Col2
111    243
111    145
213    111
289    200
222    213

在此示例中,243仅出现一次,但111(对应列中的值)出现一次以上。我只想打印

^{2}$

我的代码是:

import csv
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
    pass
f = open("1.csv", 'r')
reader = csv.reader(f)
a = []
b = []
c = []
for row in reader:
    a.append(row[0])
    b.append(row[1])
val = [i for i,j in OrderedCounter(a).items() if j==1]
val1 = [i for i,j in OrderedCounter(b).items() if j==1]

它给了我每一列的唯一值


Tags: csvinimport元素forifcounteritems
1条回答
网友
1楼 · 发布于 2024-09-28 17:16:14
from collections import Counter    
import csv

values = Counter()
data = {}

with open('1.csv') as f_input:
    csv_input = csv.reader(f_input)
    header = next(csv_input)    # comment out if no actual header

    for row in csv_input:
        values[row[0]] += 1
        values[row[1]] += 1
        data[row[0]] = row[1]

for value, count in values.items():
    try:
        if count == 1 and values[data[value]] == 1:
            print '{} {}'.format(value, data[value])
    except KeyError as e:
        pass

这将显示:

289  200

相关问题 更多 >