如何从python的csv文件中删除包含所有零的列?



我想从csv文件中删除包含所有零的列,例如列f, g, h, k, l。所讨论的csv文件是用脚本填充的,因此不可能对列进行硬编码。如果你能帮忙的话,我将非常感激。

File.csv
a,b,c,d,e,f,g,h,i,j,k,l
1,5,4,4,5,0,0,0,6,3,0,0
2,5,3,4,1,0,0,0,7,1,0,0
1,2,6,4,1,0,0,0,9,2,0,0
5,7,3,4,2,0,0,0,2,2,0,0
7,2,9,4,3,0,0,0,1,1,0,0

合成预期

File.csv
a,b,c,d,e,i,j
1,5,4,4,5,6,3
2,5,3,4,1,7,1
1,2,6,4,1,9,2
5,7,3,4,2,2,2
7,2,9,4,3,1,1

以下方法可用于csv库:

  1. 读取
  2. 中的头文件
  3. 读取
  4. 中的行
  5. 将行列表转置为列列表(使用zip)
  6. 使用set删除所有只包含0
  7. 的列
  8. 写出新的标题
  9. 将转置的列列表写成行列表。
  10. 例如:

import csv

with open('file.csv', newline='') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input)   # read header
columns = zip(*list(csv_input))   # read rows and transpose to columns
data = [(h, c) for h, c in zip(header, columns) if set(c) != set('0')]

with open('file2.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(h for h, c in data)   # write the new header
csv_output.writerows(zip(*[c for h, c in data]))

相关内容

  • 没有找到相关文章

最新更新