我非常无法从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
答案 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')