Создание базы данных временных рядов с использованием цикла - PullRequest
0 голосов
/ 17 сентября 2018

Я много рассказываю о слиянии баз данных, но я борюсь со своей проблемой.

Я хочу создать базу данных результатов гонок.Я получаю все свои данные из CSV-файлов, есть CSV-файлы для Win Market и Place Market, и по 1 для каждого в каждый день.Таким образом, у каждой даты есть 2 CSV-файла, выигрыш и место.

Я попытался создать эту базу данных, объединив данные за последние 2 дня.Который до сих пор хорошо работал.

import pandas as pd

win_1 = pd.read_csv('dwbfpricesukwin17092018.csv')
win_2 = pd.read_csv('dwbfpricesukwin16092018.csv')
place_1 = pd.read_csv('dwbfpricesukplace17092018.csv')
place_2 = pd.read_csv('dwbfpricesukplace16092018.csv')

win_data = win_1.append(win_2)
place_data = place_1.append(place_2)

place_data.rename(columns={'WIN_LOSE': 'WIN_LOSE_PLC', 'BSP': 'BSP_PLC'}, inplace=True)

total_data = win_data.merge(place_data[['WIN_LOSE_PLC', 'BSP_PLC', 'SELECTION_NAME']], on='SELECTION_NAME', how='outer')

total_data[['EVENT_DT', 'SELECTION_NAME', 'WIN_LOSE', 'BSP', 'WIN_LOSE_PLC', 'BSP_PLC']].to_csv('data.csv')

Однако я хочу создать базу данных за весь год.

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

start_date = '01012018'
end_date = '17092018'

Как я могу заставить цикл знать, что эти два числа являются датами, и проходить их по 1 дню за раз?

Также я прав здесь .append?Я хотел использовать объединение или слияние, но он просто создавал бы новые столбцы вместо того, чтобы отправлять новые данные в конец базы данных.

Надеюсь, я объяснил себе достаточно, заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете использовать Pandas.date_range с пониманием списка.

Примерно так:

win_template = 'dwbfpricesukwin{}.csv'
place_template = 'dwbfpricesukwin{}.csv'

start_date = '2018-01-01'
end_date = '2018-09-17'
dates = pd.date_range(start=start_date, end=end_date, freq='D')

win_files = [win_template.format(x.strftime('%d%m%Y')) for x in dates]
place_files = [place_template.format(x.strftime('%d%m%Y')) for x in dates]

Затем, продолжая со списками, создайте свои DataFrames, используя Pandas.concat:

df_win = pd.concat([pd.read_csv(win) for win in win_files])
df_place = pd.concat([pd.read_csv(place) for place in place_files])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...