使用循环建立时间序列数据库

时间:2018-09-17 20:23:33

标签: python-3.x pandas dataframe time-series

我在这里有很多关于合并数据库的信息,但是我为自己的问题而苦苦挣扎。

我正在寻找一个赛车成绩数据库。我从csv文件中获取所有数据,每天都有用于获胜市场和地方市场的csv文件,每个都有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 :(得分:2)

您可以将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]

然后继续进行列表理解,使用Pandas.concat创建您的DataFrame:

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])