使用日期时间组件作为级别的多索引重新索引

时间:2018-08-01 20:39:18

标签: pandas

我无法为我的生命解决这个问题。我正在尝试根据数据框的两列为数据框重新编制索引:

Index        Donation      AbsSiz         Affil                                           DonID            Datetime_Obj
19               2000    25598000           Con            ffed93a8-2c3d-770c-1e67-e76b2d7ec738 2018-07-31 17:03:35.791
20                360     4607640           Lib            62d87d76-478d-4c09-9ecb-03d32dfc7941 2018-07-31 17:03:35.791
21                 60      767940           Con            fc53a961-036c-4043-01aa-57ccfa839ee5 2018-07-31 17:03:35.791
22                 70      895930           Lib            d1c81281-8f0b-e991-d8ed-6031ac66af92 2018-07-31 17:03:35.791
23                 27      345573           Con            135fa1b5-2304-c761-0df7-147132c35cd8 2018-07-31 17:03:35.791
24               8206   105028594           Con            7aef85bd-bc67-9905-8614-aac65e2ae21e 2018-07-31 17:03:35.791
25                 32      409600           Lib            03f7c33a-920e-67db-78bd-640e8009c8a2 2018-07-31 17:03:35.791
26              28000   358400000           Con            0a2c264c-bc81-69f7-d8fe-05b521d79d9a 2018-07-31 17:03:35.791
27                230     2944000           Con            4e868220-7687-8acc-c3bd-f09624c4d15b 2018-07-31 17:03:35.791
28                  3       38400           Con            5e57de8d-3f37-d943-af95-0834dcaf8efd 2018-07-31 17:03:35.791

我的目标是对此重新索引,以使datetime_obj在同一dt.minute下的所有行都组合在一起,而基于Affil进行分组的其他级别索引也都组合在一起。

我知道这可能很简单,但是我已经将头撞在砖墙上好几个小时了。

1 个答案:

答案 0 :(得分:0)

“ re-index”是什么意思尚不清楚,但以实际价格为准,我将DataFrame索引设置为分钟和Affil

df['datetime_obj_min'] = df['datetime_ob'].dt.minute
df.set_index(['datetime_obj_min', 'Affil'], inplace=True, drop=True)

您提到要分组,但没有要执行的汇总。这是按分钟和Affil汇总捐款的示例:

df['datetime_obj_min'] = df['datetime_ob'].dt.minute
df.groupby(['datetime_obj_min', 'Affil'])['Donation'].sum()

您还提到要分组在一起:

df['datetime_obj_min'] = df['datetime_ob'].dt.minute
df.sort_values(['datetime_obj_min', 'Affil'], inplace=True)

希望这会有所帮助。