使用Python将CSV文件中特定列添加到另一个文件中

2 投票
1 回答
2060 浏览
提问于 2025-04-16 01:02

我来解释一下我的问题:
我有两个csv文件:

  • project-table.csv(大约有50列)
  • interaction-matrix.csv(大约有45列)

我想把project-table.csv中第43列的内容和interaction-matrix.csv中第1列的内容用一个点(.)连接起来,形成一个新的字符串。

接下来,

  • interaction-matrix.csv有一组表头。
  • 它的第一列现在会是我刚才提到的那个新字符串。
  • 其他所有的列只有0和1。
  • 我需要从这个interaction-matrix.csv中提取出所有值为1的列,并把它们复制到一个新的csv文件中……(第一列要保留)

这是我写的代码……

我在keepcols这一行遇到了错误……

import csv
reader=csv.reader(open("project-table.csv","r"))
writer=csv.writer(open("output.csv","w"),delimiter=" ")
for data in reader:
        name1=data[1].strip()+'.'+data[43].strip()
        writer.writerow((name1, None))


reader=csv.DictReader(open("interaction-matrix.csv","r"),[])
allrows = list(reader)
keepcols = [c for c in allrows[0] if all(r[c] != '0' for r in allrows)]

print keepcols
writer=csv.DictWriter(open("output1.csv","w"),fieldnames='keepcols',extrasaction='ignore')
writer.writerows(allrows)

这是我得到的错误信息:

Traceback (most recent call last):
  File "prg1.py", line 23, in ?
    keepcols = [c for c in allrows[0] if all([r[c] != '0' for r in allrows])]
NameError: name 'all' is not defined

project-table和interaction-matrix的第一列数据是一样的……所以我只是把project-table的第43列内容加到它自己的第1列上……

1 个回答

1

请编辑你的问题,告诉我们你遇到了什么错误信息。更新一下:NameError通常意味着你在使用一个较旧版本的Python(具体是哪个版本呢?)而这个版本没有all()这个功能,或者是你把all当成了一个变量名,并且没有展示你实际运行的代码。

注意:打开这两个文件的时候要用二进制模式,分别是“rb”和“wb”。

你说“我想把project-table.csv中col[43]的字符串和interaction-matrix.csv中col[1]的字符串用一个点(.)连接起来”,但是你实际上用的是project-table.csv中的col[2](而不是col[1]),而且在那个时候你并没有打开interaction-matrix.csv。

撰写回答