I want to delete the columns from a csv file that contain all zeros for example like the column f, g, h, k, l. The csv file in question is populated with the script so it is not possible to hardcode the columns. I would be really grateful if you could help with it.
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
Resultant expected
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
The following approach could be used with the csv
library:
zip
)0
For example:
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]))
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.