基于两列部分字符串分组并求和的Pandas数据处理问题
Pandas按xy后缀组合分组求和实现
原始数据
首先定义目标DataFrame:
import pandas as pd df = pd.DataFrame({'c1':['Ax','Ay','Bx','By'], 'c2':['Ay','Ax','By','Bx'], 'c3':[1,2,3,4]})
对应的表格输出:
| c1 | c2 | c3 | |
|---|---|---|---|
| 0 | Ax | Ay | 1 |
| 1 | Ay | Ax | 2 |
| 2 | Bx | By | 3 |
| 3 | By | Bx | 4 |
需求说明
根据c1和c2列值的末尾x/y组合(如Ax/Ay对应x/y,Bx/By对应x/y)分组,对c3列的值求和,最终得到按(x,y)、(y,x)分组的求和结果。
实现代码
# 提取c1、c2列值的最后一个字符作为分组标识 df['group_c1'] = df['c1'].str[-1] df['group_c2'] = df['c2'].str[-1] # 按分组标识分组求和,重置索引并重命名列 result = df.groupby(['group_c1', 'group_c2'])['c3'].sum().reset_index() result.columns = ['c1', 'c2', 'c3'] print(result)
输出结果
c1 c2 c3 0 x y 4 1 y x 6
其中:
x-y组对应原数据中Ax-Ay和Bx-By的c3求和:1+3=4y-x组对应原数据中Ay-Ax和By-Bx的c3求和:2+4=6
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

