Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to split row of data into columns separated by comma in python

Tags:

python

numpy

I have a text file in the following format that I am trying to convert into rows and columns:

red,red,blue
blue,red,blue 
blue,blue,red

Once the conversion is complete, I want to store the above in a rows variable:

row[0] # should return 'red red blue'
row[0][2] # should return 'blue'

So far I have gotten as far as:

file = open('myfile.txt')
for row in file:
    # do something here

But i'm not sure what to do next.. can someone help? Thanks in advance!

like image 594
Trung Tran Avatar asked Sep 20 '25 20:09

Trung Tran


1 Answers

1.numpy solution: (because numpy tag)

Use numpy.genfromtxt for numpy array:

import numpy as np
arr = np.genfromtxt('file.txt',dtype='str',delimiter=',')
print (arr)
[['red' 'red' 'blue']
 ['blue' 'red' 'blue']
 ['blue' 'blue' 'red']]

print (arr[0])
['red' 'red' 'blue']

print (arr[0][2])
blue

2.pandas solution:

Use read_csv for DataFrame and for select values loc:

import pandas as pd

df = pd.read_csv('file.txt', header=None)
print (df)
      0     1      2
0   red   red   blue
1  blue   red   blue
2  blue  blue    red

#select first row to Series
print (df.loc[0])
0     red
1     red
2    blue
Name: 0, dtype: object

#select value by index and column
print (df.loc[0, 2])
blue

3.pure python solutions:

If want nested lists use nested list comprehension:

data = [[item for item in line.rstrip('\r\n').split(',')] 
         for line in open('file.txt')]
print (data)

[['red', 'red', 'blue'], ['blue', 'red', 'blue'], ['blue', 'blue', 'red']]

Or with module csv:

import csv

reader = csv.reader(open("file.txt"), delimiter=',')
data = [word for word in [row for row in reader]]
print (data)

[['red', 'red', 'blue'], ['blue', 'red', 'blue'], ['blue', 'blue', 'red']]

print (data[0])
['red', 'red', 'blue']

print (data[0][2])
blue
like image 128
jezrael Avatar answered Sep 22 '25 10:09

jezrael