Когда я загружаю дату и конвертирую в DataFrame, я теряю первый столбец с данными - PullRequest
0 голосов
/ 03 января 2019

Я использую Quandl для загрузки цен на акции.У меня есть список названий компаний, и я загружаю всю информацию.После этого я конвертирую его во фрейм данных.Когда я делаю это только для одной компании, все работает хорошо, но когда я пытаюсь сделать это для всех одновременно, что-то идет не так.Первый столбец с данными преобразуется в индекс со значением от 0 до 3 единиц данных

Мой код выглядит следующим образом:

import quandl
import pandas as pd

names_of_company = [11BIT, ABCDATA, ALCHEMIA]

for names in names_of_company:
    x = quandl.get('WSE/%s' %names, start_date='2018-11-29', 
    end_date='2018-11-29',
    paginate=True)
    x['company'] = names
    results = results.append(x).reset_index(drop=True)

Фактические результаты выглядят следующим образом:

 Index Open   High    Low  Close  %Change   Volume  # of Trades  Turnover (1000)  company
    0  204.5  208.5  204.5  206.0     0.73   3461.0        105.0           717.31   11BIT
    1  205.0  215.0  202.5  214.0     3.88  10812.0        392.0          2254.83  ABCDATA 
    2  215.0  215.0  203.5  213.0    -0.47  12651.0        401.0          2656.15 ALCHEMIA  

Но я ожидал:

Data         Open   High    Low  Close  %Change   Volume  # of Trades  Turnover (1000)  company
2018-11-29  204.5  208.5  204.5  206.0     0.73   3461.0        105.0           717.31   11BIT
2018-11-29  205.0  215.0  202.5  214.0     3.88  10812.0        392.0          2254.83  ABCDATA 
2018-11-29  215.0  215.0  203.5  213.0    -0.47  12651.0        401.0          2656.15 ALCHEMIA  

Итак, как вы можете видеть, существует проблема с beacues данных, которые не могут быть преобразованы в правильный путь.Но, как я уже сказал, если я делаю это только для одной компании, это работает.Ниже приведен код:

x = quandl.get('WSE/11BIT', start_date='2019-01-01', end_date='2019-01-03')

df = pd.DataFrame(x) 

Буду очень признателен за любую помощь!Спасибо всем

1 Ответ

0 голосов
/ 09 января 2019

Когда вы сохраняете его в кадре данных, дата является вашим индексом. Вы теряете его, потому что когда вы используете .reset_index(), вы перезаписываете старый индекс (дату), и вместо даты, добавляемой в виде столбца, вы указываете, чтобы она сбрасывалась с .reset_index(drop=True)

Итак, я бы добавил, но затем, как только заполнился весь массив данных результатов, я бы сбросил индекс, но НЕ сбрасывал, выполняя results = results.reset_index(drop=False) или results = results.reset_index(), поскольку по умолчанию установлено значение false.

import quandl
import pandas as pd

names_of_company = ['11BIT', 'ABCDATA', 'ALCHEMIA']

results = pd.DataFrame()
for names in names_of_company:
    x = quandl.get('WSE/%s' %names, start_date='2018-11-29', 
    end_date='2018-11-29',
    paginate=True)
    x['company'] = names
    results = results.append(x)

results = results.reset_index(drop=False)

Выход:

print (results)
        Date    Open    High    ...     # of Trades  Turnover (1000)   company
0 2018-11-29  269.50  271.00    ...           280.0          1822.02     11BIT
1 2018-11-29    0.82    0.92    ...           309.0          1027.14   ABCDATA
2 2018-11-29    4.55    4.55    ...             1.0             0.11  ALCHEMIA

[3 rows x 10 columns]
...