如何动态切分包含多组Rate的Pandas DataFrame?
解决Pandas DataFrame按连续Rate块动态分割的问题
你当前用的groupby('Rate')是按Rate的值来分组的,如果不同块里有相同的Rate值,会被合并到同一个组里,这和你要的「从每个Rate行开始,到下一个Rate行出现前结束」的连续块分割需求不符。
正确实现步骤
- 先标记所有Rate行的位置(根据你的实际数据调整判断条件)
- 用累积求和生成唯一的分组ID,每次遇到Rate行就开启新分组
- 按分组ID进行groupby,提取每个子DataFrame
代码示例
假设你的Rate行是Rate列不为空的行(如果Rate行是某列等于特定值,比如df['Type'] == 'Rate',替换条件即可):
# 标记Rate行,根据实际数据调整判断逻辑 is_rate_row = df['Rate'].notna() # 生成分组ID,每遇到一个Rate行,分组ID加1 group_ids = is_rate_row.cumsum() # 按分组ID分割,得到子DataFrame列表 sub_dfs = [group for _, group in df.groupby(group_ids)]
说明
- 若数据中有4个Rate行,
group_ids会生成1-4的分组标识,最终得到4个符合要求的子DataFrame - 每个子DataFrame从对应Rate行开始,包含后续所有行直到下一个Rate行出现前
内容的提问来源于stack exchange,提问作者kadok
相关产品推荐
相关产品推荐

