Чтение из датафрейма

Здраствуйте, я новичок, помогите пожалуйста.

Вот мой код:

import pandas as pd

""" Чтение файла """

file = r"C:\si.csv"
df = pd.read_csv(file)

print(df)
print(df["OPEN"])

после вывода df все четко получается выводит как надо введите сюда описание изображения

После вывода первого столбца выходит такая ошибка

введите сюда описание изображения

Помогите плз


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

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

pd.read_csv(file) по умолчанию использует , в качестве разделителя столбцов. Поэтому вы прочитали все данные в единственный столбец.

Воспользуйтесь параметром sep=";":

df = pd.read_csv(file, sep=";")

Ваш CSV файл на самом деле содержит единственный столбец - обратите внимание на то, что все строки заключены в кавычки:

"OPEN;HIGH;LOW;CLOSE"
"79428;80170;79428;80042"
"80040;80119;79906;80063"
"80062;80343;80011;80171"

Прочитать такой файл можно так:

from io import StringIO

filename = r"D:\download\si.csv"

with open(filename) as f:
     data = "\n".join([line.strip('"\n') for line in f])

df = pd.read_csv(StringIO(data), sep=";")

результат:

In [47]: df
Out[47]:
       OPEN   HIGH    LOW  CLOSE
0     79428  80170  79428  80042
1     80040  80119  79906  80063
2     80062  80343  80011  80171
3     80171  80298  80105  80123
4     80119  80245  80016  80095
...     ...    ...    ...    ...
1863  71381  71459  71371  71422
1864  71419  71443  71393  71437
1865  71435  71458  71425  71446
1866  71445  71448  71382  71396
1867  71396  71412  71390  71390

[1868 rows x 4 columns]

In [48]: df["OPEN"]
Out[48]:
0       79428
1       80040
2       80062
3       80171
4       80119
        ...
1863    71381
1864    71419
1865    71435
1866    71445
1867    71396
Name: OPEN, Length: 1868, dtype: int64

NOTE: но лучше все-таки исправить сам CSV

→ Ссылка
Автор решения: Кирилл Маликов

Проблема в самом файле, не нужно сцеплять, а просто сохранить в формате csv с разделителем точка запятая

→ Ссылка