python - 比较单元格值 csv 文件 python

标签 python csv

我在 CSV 文件中有以下数据集

[1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 1, 1, 2]

现在我想通过比较每个值来计算它们并将其存储在数组中,但我不想要频率。所以我的输出应该是这样的:

[3, 4, 3, 2, 1]

我的代码如下:

import csv

with open("c:/Users/Niels/Desktop/test.csv", 'rb') as f:
    reader = csv.reader(f, delimiter=';')
    data = []

    for column in reader:
        data.append(column[0])

    results = data
    results = [int(i) for i in results]
    print results

    dataFiltered = []
    for i in results:
        if i == (i+1):
            counter = counter + 1
            dataFiltered.append(counter)
            counter = 0
    print dataFiltered

我的想法是比较单元格值。我知道结果的 for 循环有问题,但我不知道我的错误在哪里。我的想法是通过比较单元格值。也许

最佳答案

我不会详细介绍你的循环,它非常是错误的,if i==(i+1): 不能是 True 对于初学者。

接下来,您最好使用 itertools.groupby并对组的长度求和:

import itertools

results = [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 1, 1, 2]

freq = [len(list(v)) for _,v in itertools.groupby(results)]

print(freq)

len(list(v)) 使用 list 强制对分组项目进行迭代,因此我们可以计算长度(可能是 sum(1 for x在 v) 中会更高效/更合适,我没有对这两种方法进行调整)

我得到:

[3, 4, 3, 2, 1]

旁白:读取 csv 文件的第一列并将结果转换为整数可以简单地通过以下方式实现:

results = [int(row[0]) for row in reader]

关于python - 比较单元格值 csv 文件 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43250045/

相关文章:

python - 在Docker容器中的 headless Chrome中使用python中的Selenium

python - 字符串和日期时间对象互换

python - 为什么我们需要 __init__ 来初始化一个 python 类

python - 错误 : Could not find a version that satisfies the requirement csv (from versions: none)

c# - 用 C# 编写 CSV 解析器

r - 从给定文件夹读取多个 csv 文件时如何获取命名列表?

PHP 到 CSV - 将一行分成多行

python - 一个大进程或多个小进程的内存使用情况更好吗?

python - 如何将二进制图像转换为 python 中的内存数据结构?

python - 如何使用 Google Colab python 读取/循环访问文件夹中的多个 .csv 文件,然后将每个文件分配为函数参数