【Python】pandas的dataframe根据行索引值分组

处理这么一个pandas的dataframe数据数据:
在这里插入图片描述
这里行索引是连续n个0-m的序列,这个m不是固定值
比如0-6、0-8……0-55,现在想把每一个0~m分为一个单独的dataframe。
本来想用groupby(),研究了半天感觉不太行,还是得自己分。

#新建一列保存原来的index
maxmin_all_locations["index"] = maxmin_all_locations.index
#把索引重置一下,从0正向排序
maxmin_all_locations = maxmin_all_locations.reset_index(drop=True)

整理好是这样:
在这里插入图片描述
然后按照index==0的行定位截断:

# 获取行索引中 0 的位置
zero_indices = maxmin_all_locations.index[maxmin_all_locations['index'] == 0].tolist()
# 分组
groups = []
for i in range(len(zero_indices) - 1):
    start_index = zero_indices[i]
    end_index = zero_indices[i + 1]
    group = maxmin_all_locations.iloc[start_index:end_index]
    groups.append(group)
# 处理最后一组数据
last_group = maxmin_all_locations.iloc[zero_indices[-1]:]
groups.append(last_group)
# 打印每个组的大小
for i, group in enumerate(groups):
    print(f"Group {i}: {group.shape}")

打印出来结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值