Skip to main content
 首页 » 编程设计

python之使用python将csv文件中的特定列附加到另一个

2025年05月04日10qq号

我会解释我的整个问题:
我有 2 个 csv 文件:

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

我想在 project-table.csv 的 col[43] 中附加字符串,并在 interaction-matrix.csv 的 col[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 

项目表和交互矩阵在它们各自的第一列中都有相同的数据..所以我只是将 prj-table 的 col[43] 附加到同一个表本身的 col[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,您在那个阶段还没有打开它)。