1

Is it possible to read csv files in columns instead of rows in python?

e.g. if i have a csv file like this:

a b c
1 0 1
1 4 1

How would one get a list of [a,1,1],[b,0,4],[c,1,1] or something of the sorts?

1

3 Answers 3

3

You are looking for transpose functionality. To solve your problem,

  1. First read csv as rows and create row wise tuples in a list ex: [(a,b,c),(1,0,1),(1,4,1)..]
  2. Transpose above list using any of the solutions present in Transpose a matrix in Python.

Post transpose , your data will look like [(a,1,1),(b,0,4)..]

Sign up to request clarification or add additional context in comments.

Comments

3

use zip(*reader).

some.csv

a b c 
1 0 1 
1 4 1

scrip.py

import csv 
with open('some.csv', 'rb') as f:
    reader = csv.reader(f, delimiter=' ')
    print zip(*reader)

output:

[('a', '1', '1'), ('b', '0', '4'), ('c', '1', '1')]

Comments

0

You can use something like this:

# Open file and read lines
input_file = open('filename.csv')
lines = input_file.readlines()

# Create list with n sublists (n - number of columns)
l = [[] for _ in lines[0].split('\t')]

# Fill in sublists
for line in lines:
    for i, column in enumerate(line.split('\t')):    
        l[i].append(column)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.