我有一个看起来像这样的数据框df。日期和时间是2个多级索引
observation1 observation2 date Time 2012-11-02 9:15:00 79.373668 224 9:16:00 130.841316 477 2012-11-03 9:15:00 45.312814 835 9:16:00 123.776946 623 9:17:00 153.76646 624 9:18:00 463.276946 626 9:19:00 663.176934 622 9:20:00 763.77333 621 2012-11-04 9:15:00 115.449437 122 9:16:00 123.776946 555 9:17:00 153.76646 344 9:18:00 463.276946 212
我想对每日数据块运行一些复杂的过程。
伪代码看起来像
for count in df(level 0 index) : new_df = get only chunk for count complex_process(new_df)
因此,首先,我找不到一种方法来仅访问某个日期的数据块
2012-11-03 9:15:00 45.312814 835 9:16:00 123.776946 623 9:17:00 153.76646 624 9:18:00 463.276946 626 9:19:00 663.176934 622 9:20:00 763.77333 621
然后将其发送进行处理。我在for循环中执行此操作,因为我不确定是否有任何方法可以做到而不必提及级别0列的确切值。我进行了一些基本搜索,并且能够获得df.index.get_level_values(0),但是它返回了我所有的值,这导致循环一天运行多次。我想每天创建一个数据框并将其发送以进行处理。
一种简单的方法是对索引的第一级进行分组-遍历groupby对象将返回组密钥和包含每个组的子帧。
In [136]: for date, new_df in df.groupby(level=0): ...: print(new_df) ...: observation1 observation2 date Time 2012-11-02 9:15:00 79.373668 224 9:16:00 130.841316 477 observation1 observation2 date Time 2012-11-03 9:15:00 45.312814 835 9:16:00 123.776946 623 9:17:00 153.766460 624 9:18:00 463.276946 626 9:19:00 663.176934 622 9:20:00 763.773330 621 observation1 observation2 date Time 2012-11-04 9:15:00 115.449437 122 9:16:00 123.776946 555 9:17:00 153.766460 344 9:18:00 463.276946 212