我在CSV文件中有一些日期和时间的数据。我想快速将这些转换为Pandas时间戳,但下面的代码花了太长时间。有没有办法加快速度?瓶颈步骤是最后一步。谢谢!
TY1 = pd.read_csv('Data\TY_2013_1min.csv')
TY2 = pd.read_csv('Data\TY_2012_1min.csv')
TY = TY2.append(TY1, ignore_index=True)
TY.index = pd.to_datetime(TY.Date + ' ' + TY.Time)
答案 0 :(得分:0)
您可以reading the csv直接parse_dates
:
TY1 = pd.read_csv('Data\TY_2013_1min.csv',
parse_dates=[['Date', 'Time']],
index_col = 'Date_Time')
注意:也许concat更有意义而不是追加:
TY = pd.concat([TY1, TY2], ignore_index=True)
答案 1 :(得分:0)
我发现最快的方法是创建自己的解析器。 例如:
def dt_parse(s1, s2):
dt = datetime.datetime(int(s1[6:]), int(s1[0:2]), int(s1[3:5]),
int(s2[:2]), int(s2[3:5]), int(s2[6:8]))
# depending on the datetime format you can move these values around
return dt
然后您可以在pd.read_csv中指定您使用的日期和时间列(本例中为1和2)以及您的解析器(dt_parse):
df = pd.read_csv(file_path,
sep=',',
decimal='.',
header=-1,
parse_dates=[[1,2]],
date_parser=dt_parse,
index_col='1_2')
我发现对于大文件(~2G,它使其快30%)比拉日期和时间并分别创建时间戳列表。希望这有帮助