Pandas按列后缀分组求和:汇总c1列x/y对应c2值
Pandas按结尾字符分组求和实现
原始数据
先定义目标DataFrame:
import pandas as pd df = pd.DataFrame({'c1':['Ax','Bx','Ay','By'], 'c2':[1,2,3,4]})
输出结果:
c1 c2 0 Ax 1 1 Bx 2 2 Ay 3 3 By 4
解决方案
提供两种实用实现方式:
方法一:按结尾字符分组(通用型)
提取c1列最后一个字符作为分组键,求和后调整格式:
# 按c1最后一个字符分组,对c2求和 grouped_sum = df.groupby(df['c1'].str[-1])['c2'].sum() # 重命名索引为Cx/Cy,转换为目标格式的DataFrame result = grouped_sum.rename(lambda idx: f'C{idx}').reset_index(name='c2').rename(columns={'index': 'c1'}) print(result)
方法二:直接筛选求和(针对性)
如果仅需处理x和y两种结尾,可直接筛选对应行后求和:
# 分别计算x结尾和y结尾的c2总和 cx_total = df[df['c1'].str.endswith('x')]['c2'].sum() cy_total = df[df['c1'].str.endswith('y')]['c2'].sum() # 构建结果DataFrame result = pd.DataFrame({'c1': ['Cx', 'Cy'], 'c2': [cx_total, cy_total]}) print(result)
两种方法最终都会输出期望结果:
c1 c2 0 Cx 3 1 Cy 7
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

