DataFrame分组遇KeyError:如何将1000行数据分为10等组并提取指定组
解决DataFrame按固定行数分组及提取指定分组的问题
你用df.groupby(100)报错是因为groupby会把传入的单个数值当作列名处理,但你的DataFrame里没有名为100的列,因此触发KeyError。下面是两种可行的实现方案:
方案一:用分组键实现groupby操作(支持后续聚合等操作)
利用DataFrame的索引做整数除法,生成每组的标识键,以此完成分组:
# 生成从0开始的分组键(0-9对应10个分组) group_keys = df.index // 100 # 如果需要分组编号从1开始,改成这行 # group_keys = (df.index // 100) + 1 # 按分组键执行分组 res = df.groupby(group_keys)
提取指定分组
要提取编号为[1,5,6,7]的分组,可使用get_group方法配合pd.concat合并结果:
import pandas as pd # 提取多个分组并合并成一个DataFrame selected_groups = pd.concat([res.get_group(num) for num in [1,5,6,7]])
方案二:直接拆分DataFrame为列表(适合仅拆分提取场景)
如果不需要groupby的聚合、遍历等功能,用numpy.array_split更直接,它会把DataFrame拆分成指定数量的均等子DataFrame列表:
import numpy as np # 拆分为10个均等的DataFrame列表(列表索引从0开始) df_groups = np.array_split(df, 10) # 注意:列表索引从0开始,所以编号1对应索引0,5对应4,以此类推 selected_dfs = [df_groups[i-1] for i in [1,5,6,7]] # 合并为单个DataFrame selected_df = pd.concat(selected_dfs)
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

