【问题标题】:How to find the intersection (common elements) between two columns of a single csv file in python?如何在python中找到单个csv文件的两列之间的交集(公共元素)?
【发布时间】:2019-11-01 00:01:35
【问题描述】:

我在 csv 文件中几乎有两列(1000 行),没有标题(制表符分隔)。列值的示例内容如下。它可以是一个短语或一个单词。

CSV 文件格式:

ac           home          

home         big         

new city     city

city         paris

heat         waves

blood        blood pressure

relation     blood

输入格式(编辑):

我想计算 csv 文件的两列之间的公共元素?有没有办法。我完全不知道如何实现这一目标。

我对文件 (.csv) 及其变体完全陌生。任何帮助都深表感谢。

输出

home, city, blood

我知道如何计算两个字典、列表等的交集。但这无助于我实现所需的解决方案。

【问题讨论】:

  • 你试过什么没用?提示:1/ 使用 stdlib 的 csv 模块读取您的数据。 CSV 是一种面向行的格式(一行 = 一行),因此您必须首先将所有数据循环收集到两个不同的集合中(内置 set 类型),一个用于第一列,一个用于second - 每行的 IOW,将第一个值(第一个 col)添加到第一组,将第二个值(第二个 col)添加到第二组。那么找到常用词就是做一个集合交集(是set类型的方法)。

标签: python python-3.x csv intersection reader


【解决方案1】:

使用set --> set.intersection

例如:

import csv

with open(filename) as infile:
    reader = csv.reader(infile, delimiter="\t")
    c1, c2 = set(), set()
    for row in reader:
        if row:
            c1.add(row[0])
            c2.add(row[1])

print(c1.intersection(c2))

输出:

{'home', 'city', 'blood'}

【讨论】:

  • 谢谢拉克什。它显示IndexError: list index out of range
  • 每行之间是否有空的新行?
  • 是的,对列1的最后几个(10个空单元格)。
  • 更新了 sn-p
  • 看起来您的某些行没有 2 个值。
猜你喜欢
  • 2016-11-05
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多