如何在Pandas中按bins对元组首元素分组并计算对应值?
按自定义Bins分组统计元组列表的均值解决方案
以下是完整的实现步骤,基于你已经完成explode拆分的基础上:
1. 将拆分后的元组拆分为独立列
explode后每行是单个元组,需要把元组的两个元素拆成单独列,方便后续处理:
# 假设你已经执行过 df_exploded = df.explode('lists') df_exploded[['value1', 'value2']] = pd.DataFrame(df_exploded['lists'].tolist(), index=df_exploded.index)
2. 过滤首元素为0的元组
直接筛选掉value1等于0的行:
df_filtered = df_exploded[df_exploded['value1'] != 0.0]
3. 按自定义Bins分组并计算均值
使用pd.cut将value1映射到你定义的bins区间,然后分组计算value2的均值:
# 用bins的右边界作为分组标签,匹配你期望的输出格式 df_filtered['bin_label'] = pd.cut( df_filtered['value1'], bins=bins, labels=bins[1:], # 每个区间的右边界作为显示标签 include_lowest=True # 确保最小的非0值能被分到第一个bin ) # 分组计算均值 result = df_filtered.groupby('bin_label')['value2'].mean()
4. 查看结果
此时result就是你需要的格式,直接打印即可:
print(result)
关键说明
pd.cut的labels=bins[1:]确保输出的索引是每个bin的右边界,和你给出的示例一致- 没有数据的bin会自动显示
NaN,无需额外处理 - 如果需要其他统计量(比如求和、计数),只需把
.mean()换成对应的方法(.sum()、.count()等)
内容的提问来源于stack exchange,提问作者apk19
相关产品推荐
相关产品推荐

