Почему при чтении строки из .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 шт):
В вашем коде вы печатаете значение из второго столбца (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