将熊猫groupby对象转换为数据框,同时保留组语义

时间:2018-10-08 17:17:08

标签: pandas

我非常无法从any answers I have found推断出如何对数据帧进行分组,然后将由groupby计算出的分组语义重新合并到原始数据帧中。似乎缺少文档,因此答案不适用于当前的熊猫版本。

此代码:

grouped = df.groupby(pd.Grouper(
            key = my_time_column, 
            freq = '15Min', 
            label='left', 
            sort=True)).apply(pd.DataFrame)

回了一个数据框,但是我发现没有办法过渡到具有与原始df相同数据的数据框,同时也以开头填充了一个新列日期时间,groupby对象中每一行所属的组的日期时间。

这是我当前解决此问题的方法:

grouped = df.groupby(pd.Grouper(
            key = my_datetime_column, 
            freq = '15Min', 
            label='left', 
            sort=True))

sorted_df = grouped.apply(pd.DataFrame)

interval_starts = []
for group_idx, group_member_indices in grouped.indices.items():
    for group_member_index in group_member_indices:
        interval_starts.append(group_idx)

sorted_df['interval_group_start'] = interval_starts

想知道是否有一种优雅的熊猫方式。

熊猫版本:0.23.0

1 个答案:

答案 0 :(得分:1)

IIUC,这应该可以满足您的需求

grouped = df.groupby(pd.Grouper(key=my_time_column, 
                                freq = '15Min', 
                                label='left', 
                                sort=True))\
            .apply(pd.DataFrame)
grouped['start'] = grouped.loc[:, my_time_column] \
                          .groupby(level=0) \
                          .transform('min')