Не удается правильно прочитать и отформатировать столбец даты на HTML-странице - PullRequest
1 голос
/ 03 мая 2019

У меня проблема с анализом столбца даты в правильном формате.Я читаю данные со страницы HTML с pd.read_html.Данные, которые я читаю, выглядят так:

picture: data source

Здесь URL к данным.

Я читаю следующее:

list = pd.read_html("https://www.onvista.de/onvista/times+sales/popup/historische-kurse/?notationId=253929&dateStart=30.04.2018&interval=M3&assetName=Apple&exchange=Nasdaq", header=0, parse_dates=[0],  decimal=',', thousands='.')

Когда я что-то печатаю, некоторые даты менялись месяцем на день.Например, строка 0 выглядит хорошо, но для строк 1 - 9 переключаются месяцы и дни.Строки 10 и 11 выглядят хорошо снова.Это происходит во всех месяцах в течение первых нескольких дней.

picture: output with parsing date

Я пытался загрузить данные без разбора столбца даты на дату и время, поэтому я мог отформатировать столбец по своему желанию, ноесли я распечатываю фрейм данных, столбец теряет отдельную ..

picture: output without parsing date

У кого-нибудь есть идеи, как правильно читать данные?

1 Ответ

0 голосов
/ 03 мая 2019

Не уверен, почему parse_dates не работает, но вы можете использовать datetime и метод DataFrame apply для panda для преобразования дат.Одно примечание - это выглядит немного запутанным, потому что дни в датах пропускают нулевое заполнение:

import pandas as pd
from datetime import datetime
lista = pd.read_html("https://www.onvista.de/onvista/times+sales/popup/historische-kurse/?notationId=253929&dateStart=30.04.2018&interval=M3&assetName=Apple&exchange=Nasdaq", header=0,  decimal=',', thousands='.')
df = lista[0]
df['Datum'] = df.apply(lambda x: datetime.strptime(x['Datum'].astype(str)[:-2], '%d%m%Y')
                       if len(x['Datum'].astype(str)[:-2]) == 8 else 
                       datetime.strptime('0' + x['Datum'].astype(str)[:-2], '%d%m%Y'), axis=1)

И это возвращает:

Datum   Eröffnung   Hoch    Tief    Schluss Volumen
0   2018-04-30  162.19  167.26  161.840 165.26  42427424
1   2018-05-01  166.35  169.20  165.270 169.10  53569376
2   2018-05-02  175.25  177.75  173.800 176.57  66539371
3   2018-05-03  175.68  177.50  174.441 176.89  34068180
4   2018-05-04  178.17  184.25  178.170 183.83  56201317
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...