比较csv文件python中的单元格值
我在CSV文件中有以下数据集 [1,1,1,2,2,2,3,3,1,1,2] 现在我想通过比较来计算每个值,并将其存储在一个数组中,但我不想要频率。所以我的输出应该是这样的: [3,4,3,2,1] 我的代码如下:比较csv文件python中的单元格值,python,csv,Python,Csv,我在CSV文件中有以下数据集 [1,1,1,2,2,2,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 i
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循环的结果中有些错误,但我不知道我的错误在哪里。我的想法是通过比较细胞值。如果我==(I+1):对于初学者来说,就不可能是
真的,我可能不会详细讨论你的循环,这是非常错误的
下一步,您最好使用并合计组的长度:
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代表x/v)
会更有效/更合适,我还没有将这两种方法都设置为基准)
我得到:
[3, 4, 3, 2, 1]
旁白:读取csv文件的第一列并将结果转换为整数可以通过以下方法简单实现:
results = [int(row[0]) for row in reader]
如果i==(i+1):
那就不会发生!是否要检查上一个元素是否与下一个元素相同?为什么要执行results=data;结果=[结果中i的int(i)]
?为什么不直接做results=[int(i)for i in data]
?