csv - 从另一列中删除一列的数据

时间:2016-04-19 21:23:08

标签: python csv

我想从第3列(它们的两个整数)中获取第4列的值,这就是我所拥有的。

with open('CLASSES.csv', 'rt')as f:
    reader=csv.reader(f)
    people=[]
    for column in reader:
        people.append(column[0:8])

difference = [x[3] for x in people] - [x[4] for x in people]
print(difference)

我收到错误 TypeError:不支持的操作数类型 - :'list'和'list'。我知道为什么我会得到错误,但我想不出办法解决它。

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

就像@Peter Wood在评论中所说,你需要在一个列表理解中减去,而不是两个列表理解,因为这导致list - list。 您还需要转换为数字。

difference = [int(x[3]) - int(x[4]) for x in people]

如果你想做这样的事情,最好使用numpy甚至pandas

使用numpy及其genfromtxt函数:

import numpy as np
people = np.genfromtxt('CLASSES.txt', delimiter=',', dtype=None)
difference = people[:, 3] - people[:, 4]

这里people将是一个二维numpy数组,第一个索引遍历行,第二个列[:, 3]占据第三列的每一行。

dtype=None选项可让genfromtxt自动决定每列的类型,默认为float