如何在Pandas中基于值按特定分组规则汇总DataFrame?
实现方法
可以用Pandas的分组(groupby)结合自定义函数来完成这个需求,具体代码和步骤如下:
1. 构造原始DataFrame(若已有数据可跳过此步骤)
import pandas as pd data = { 'Node_Name': ['Abc1', 'Abc1', 'Zxd', 'Zxd', 'Zxd', 'Ddd', 'Ddd', 'Ddd', 'Ddd'], 'size': [10, 20, 30, 40, 80, 10, 40, 80, 100], 'count': [2, 2, 3, 3, 3, 4, 4, 4, 4] } df = pd.DataFrame(data)
2. 核心处理代码
# 定义分组处理逻辑的函数 def process_group(group): # 取组内的count值(组内count统一,取第一个即可) group_count = group['count'].iloc[0] if group_count <= 2: # count≤2时取size的最小值 return pd.Series({'size': group['size'].min(), 'count': group_count}) else: # count≥3时,计算总和减去最大值(即去掉最大size后的求和) total_size = group['size'].sum() - group['size'].max() return pd.Series({'size': total_size, 'count': group_count}) # 按Node_Name分组并应用处理函数,最后重置索引 result_df = df.groupby('Node_Name').apply(process_group).reset_index() # 查看结果 print(result_df)
3. 结果验证
运行代码后会输出目标DataFrame:
Node_Name size count 0 Abc1 10 2 1 Ddd 130 4 2 Zxd 70 3
内容的提问来源于stack exchange,提问作者user1471980
相关产品推荐
相关产品推荐

