Python 收集CSV文件中唯一元素的所有索引并将其填充到一行中
我在CSV文件中有一组数据,如下所示:Python 收集CSV文件中唯一元素的所有索引并将其填充到一行中,python,indices,unique-values,Python,Indices,Unique Values,我在CSV文件中有一组数据,如下所示: [['1', '1.5', '1', '2', '1.5', '2'], ['2', '2.5', '3', '2.5', '3', '2.5'], ['3', '2.5', '1.5', '1', '1', '3'], ['1.5', '1', '2', '2', '2', '2.5'], ['1.5', '1.5', '1', '2.5', '1', '3']] 我想找到以升序列出的数据中的所有唯一条目。我尝试过以下代码: import cs
[['1', '1.5', '1', '2', '1.5', '2'],
['2', '2.5', '3', '2.5', '3', '2.5'],
['3', '2.5', '1.5', '1', '1', '3'],
['1.5', '1', '2', '2', '2', '2.5'],
['1.5', '1.5', '1', '2.5', '1', '3']]
我想找到以升序列出的数据中的所有唯一条目。我尝试过以下代码:
import csv
import numpy
dim1=[]
with open('D:/TABLE/unique_values.csv') as f1:
for rows in f1.readlines():
dim1.append(rows.strip().split(','))
uniqueValues = numpy.unique(dim1)
print('Unique Values : ',uniqueValues)
它给了我这个输出:
Unique Values : ['1' '1.5' '2' '2.5' '3']
我想在CSV文件的列中列出这些唯一的条目,并想针对每个唯一条目在一行中写入它们的运行索引。下面显示了所需的示例输出
样本输出
我尝试过其他numpy函数,但它们只返回第一次出现的唯一条目。此外,我还看到了其他相关文章,但它们没有填充一行中每个唯一元素的运行索引。这对于标准库中的一些函数来说是相当直接的:
collections.defaultdict
csv.reader
和itertools.count
。比如:
import csv
import collections
import itertools
data = collections.defaultdict(list)
index = itertools.count(1)
with open('D:/TABLE/unique_values.csv') as f1:
reader = csv.reader(f1)
for row in reader:
for value in row:
data[value].append(next(index))
for unique_value, indices in data.items():
print(f"{unique_value}:", *indices)
对我来说,这似乎是一个相当模糊的转变。我不期望你能在numpy或者其他任何地方找到一个标准函数。不过,自己编写代码并不难。只需创建一个映射,其中的键是表中的每个值,值是包含关联键出现的每个位置的列表。您可以轻松地遍历输入表并构建它。那么,按照您希望新表的外观来编写地图的内容将是一件容易的事情。非常感谢。当我试图运行这段代码时,它发出了一个错误:“模块‘itertools’没有‘counter’属性”。这是什么意思?我可以看到您编辑了代码,但它仍然给出相同的错误。我有点困惑到底发生了什么。我在网上搜索了一下,在这里找到了关于itertools的相关信息()。我把Counter()改为count(),程序就运行了。谢谢:)