Почему при чтении строки из .csv файла на выходе получаю столбец?

Есть файл CSV с данными такого формата:

1я строка: [t___0, t___1, ----]---------- n-я строка  
1й столбец: [0.1224141, 0.2123213,--- ]-- n-й столбец 

Нужно прочитать оттуда хотя бы одну строку. Но при чтении строки, программа выдает столбец. Чего только не перепробовал, но проблема не решилась.

import csv
with open('1.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')

    for row in reader :
        print (row[1])

В данном коде я указал, что мне нужна вторая строка, но получаю первый столбец. Что не так?

Пример данных из CSV файла:

t_000,t_001,t_002,t_003,t_004,t_005,t_006,t_007,t_008,t_009,alfa,beta,t
0.159,0.098,0.137,0.123,0.543,0.123,0.443,0.044,0.213,0.243,0,3,con(3x1)

и так далее все в таком же духе, кроме первой строки.


Ответы (1 шт):

Автор решения: MaxU

В вашем коде вы печатаете значение из второго столбца (row[1]) в цикле для всех строк. В переменной row - находится список значений из текущей строки:

import csv

filename = r"C:\temp\data.csv"

with open(filename, 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for row in reader :
        print (row)

вывод на экран:

['t_000', 't_001', 't_002', 't_003', 't_004', 't_005', 't_006', 't_007', 't_008', 't_009', 'alfa', 'beta', 't']
['0.159', '0.098', '0.137', '0.123', '0.543', '0.123', '0.443', '0.044', '0.213', '0.243', '0', '3', 'con(3x1)']

PS обратите внимание на то, что модуль csv читает все данные как строки и если вы хотите работать с целыми, вещественными числами, датами и т.д., то вам самому придется парсить все эти данные из строк в правильные типы данных.


Если же вы, как вы указали в комментарии, хотите анализировать и обрабатывать данные, то гораздо удобнее и эффективнее будет воспользоваться модулем Pandas:

import pandas as pd   #  pip install pandas

df = pd.read_csv(filename, sep=",")
print(df)

вывод:

   t_000  t_001  t_002  t_003  t_004  ...  t_008  t_009  alfa  beta         t
0  0.159  0.098  0.137  0.123  0.543  ...  0.213  0.243     0     3  con(3x1)

PS Pandas автоматически парсит числовые и boolean данные в правильный тип данных

In [71]: df.dtypes
Out[71]:
t_000    float64
t_001    float64
t_002    float64
t_003    float64
t_004    float64
t_005    float64
t_006    float64
t_007    float64
t_008    float64
t_009    float64
alfa       int64
beta       int64
t         object
dtype: object
→ Ссылка