gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:05 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com