Pandas 将groupby对象转换为dataframe,同时保留组语义
我不幸地未能从中推断出一个数据帧的分组,然后将Pandas 将groupby对象转换为dataframe,同时保留组语义,pandas,Pandas,我不幸地未能从中推断出一个数据帧的分组,然后将groupby计算的组语义合并回原始数据帧。似乎缺少文档,因此答案不适用于当前版本 此代码: grouped = df.groupby(pd.Grouper( key = my_time_column, freq = '15Min', label='left', sort=True)).apply(pd.DataFrame) 返回一个数据帧,但我找
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.0IIUC,这应该满足您的需求:
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')
您希望使用
groupby
+transform
返回类似的索引序列。在这种情况下,可能按时间列排序并转换。首先
将结果广播回每个组成员。如果您提供示例数据,我相信有人会提供准确的代码。您正在查找transform()
:很抱歉,可能会误导您。我添加了解决问题的代码,基本上问题中包含的代码足够快。还不确定如何使用transform
进行转换。我应该添加一个完整且可复制的示例。