python - 优化:根据日期将带有DatetimeIndex的pandas DataFrame拆分为列表
问题描述
我有DataFrames
两个DatetimeIndex
:train_df
尺寸[981240 rows x 12 columns]
和eval_df
尺寸[98670 rows x 12 columns]
。
我正在尝试将每个拆分DataFrame
为 a list
of DataFrame
s,其中每个代表一个唯一的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
列表中每个顶部删除的行数。
解决方案
这应该有效:
# 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)]
推荐阅读
- mongodb - 合并来自两个集合的数据
- submenu - 下拉内容在子菜单上打开
- ios - 滚动视图下的iOS swift 4 imageview:双击以缩小
- angular - 应用程序根页面中的 Ionic V4 ngOnDestroy 导致问题
- web-scraping - Instagram 数据抓取/抓取
- html - 有没有办法在重复转换之前添加“冷却”延迟或要求用户输入?
- php - Ruby toLengthValue 函数转换为 PHP
- java - Java:equals 和 hashCode 方法契约
- uwp-xaml - UWP XAML:无法将 GridView 项目拉伸到全宽
- laravel - laravel + bootstrap 4.1:导航栏 + 全高 div?