如何在Pandas中每当指定列出现0值时拆分数据集
Pandas数据集拆分方案
你的拆分规则本质是每遇到A列值为0的行,就作为新分组的起始,可以按以下步骤实现:
实现代码
import pandas as pd # 1. 构造原始数据集(实际使用时替换为读取你自己的数据即可) df = pd.DataFrame({ 'A': [0,1,2,0,1,2,3,0,1], 'B': [10.0,15.0,14.0,10.0,100.0,1.4,20.0,12.0,4.0] }) # 2. 生成分组标识:每碰到A=0时,分组号自动+1 df['group_id'] = df['A'].eq(0).cumsum() # 3. 拆分得到子数据集列表,每个元素对应一个你要的子表 split_dfs = [group_df.reset_index(drop=True) for _, group_df in df.groupby('group_id')] # 可选:删除额外添加的group_id列,不影响原始数据结构 df.drop('group_id', axis=1, inplace=True)
使用方法
你可以直接通过索引取对应子表的B列,不会出现全部数据聚合的情况:
- 取第一个子表的B列:
split_dfs[0]['B'] - 取第二个子表的B列:
split_dfs[1]['B'] - 取第三个子表的B列:
split_dfs[2]['B']
打印split_dfs即可看到和你需求完全一致的拆分结果。
内容的提问来源于stack exchange,提问作者Jack Cahill
相关产品推荐
相关产品推荐

