首页 > 解决方案 > 优化:根据日期将带有DatetimeIndex的pandas DataFrame拆分为列表

问题描述

我有DataFrames两个DatetimeIndextrain_df尺寸[981240 rows x 12 columns]eval_df尺寸[98670 rows x 12 columns]

我正在尝试将每个拆分DataFrame为 a listof DataFrames,其中每个代表一个唯一的date(包含带有相应 的索引切片date)。

我当前的代码:

train_data = [train_df.loc[train_df.index.date == date][nan_rows:].copy().dropna() for date in np.unique(train_df.index.date)]
eval_data = [eval_df.loc[eval_df.index.date == date][nan_rows:].copy().dropna() for date in np.unique(eval_df.index.date)]

这需要很长时间才能完成。我想知道是否有人知道如何优化此操作以在合理的时间内完成?

顺便说一句,nan_rows这只是我想从DataFrame列表中每个顶部删除的行数。

标签: pythonpandasdataframenumpy

解决方案


这应该有效:

# assuming that your datetime column is called 'Datetime'
train_data = [x for x in train_df.set_index('Datetime').groupby(lambda x: x.date, axis=0)]
eval_data = [x for x in eval_df.set_index('Datetime').groupby(lambda x: x.date, axis=0)]

推荐阅读