首页 > 解决方案 > python3列表减法问题 - 错误列表不可调用

问题描述

我正在尝试打开 csv 文件(两个)并从这两个文件中的两列中减去值。我将数据调用到数组中,然后使用 map 和 operator.sub 来获取它,但是我一直坚持将该数据输出为打印或另一个 csv。

我有两列形式的数据 - a1, b1 和 a2, b2 在两个文件中。我想找到减去 b2(i) 和 b1(i),并制作一个带有差异“b”的新 csv 文件。此处复制的数据值有点大。例如,1,10, /n 2, 15 /n 3 20 等和 1,20 /n 2,20 /n 3, 30。我应该得到 5,5,10 作为输出列表或数组或甚至作为输出文件。

我的问题 - 我没有得到任何输出,但错误说“列表”是不可调用的。我搜索了很多关于内置函数问题的细节,但仍然不知道我在哪里搞砸了。

import csv
try:
    from itertools import imap
except ImportError:
    # Python 3...
    imap=map
from operator import sub

a = []
b = []
c = []

with open('1.csv') as csvDataFile:
    csvReader = csv.reader(csvDataFile)
    for row in csvReader:
        a.append(row[1])

with open('2.csv') as csvDataFile:
    csvReader = csv.reader(csvDataFile)
    for row in csvReader:
        b.append(row[1])

c = list(imap(sub, a, b))

print(c)

标签: pythonlistsubtraction

解决方案


只需创建一个输出文件并将数据放入其中

您可以使用pandas或仅使用当前csv

with open('my_output.csv', mode='w') as output_file:
    writer = csv.writer(output_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    writer.writerow(['John Smith', 'Accounting', 'November'])

推荐阅读