Чтение из датафрейма
Здраствуйте, я новичок, помогите пожалуйста.
Вот мой код:
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 с разделителем точка запятая
