Pandas如何基于首列从~5到~0的周期性将大数据框拆分为多个子df
Pandas按周期递减规则拆分数据框实现方法
你已经生成的id列已经标记了每个新周期的起点,只需要基于该标记生成周期组编号,再按组拆分即可。
完整实现代码
步骤1:生成周期组编号
每次遇到id=0(新周期起点)时组号自动累加:
df['group'] = df['id'].eq(0).cumsum()
步骤2:拆分得到所有子数据框
你可以根据使用习惯选择存储格式:
- 存为字典,可直接通过子df名称访问:
sub_dfs = {f'sub_df{g}': group.drop(columns=['id', 'group']) for g, group in df.groupby('group')} # 访问示例:sub_dfs['sub_df1'] 就是第一个周期的子数据框
- 存为列表,按顺序对应子数据框:
sub_df_list = [group.drop(columns=['id', 'group']) for _, group in df.groupby('group')] # 访问示例:sub_df_list[0] 就是第一个周期的子数据框
可选优化:合并逻辑
如果你不需要保留id列,可以把标记和分组逻辑合并为一行代码,省去单独生成id列的步骤:
df['group'] = (df['a'].shift(1) > df['a']).astype(int).eq(0).cumsum()
内容的提问来源于stack exchange,提问作者cyclomen
相关产品推荐
相关产品推荐

