如何基于员工ID合并Python Pandas数据框中的实付金额列?
基于员工ID合并实付金额列的Pandas解决方案
先模拟下你的数据框结构(毕竟看不到附图),大概是这类包含员工ID和实付金额的格式:
| 员工ID | 实付金额 | 员工姓名 | 部门 |
|---|---|---|---|
| 101 | 500 | 张三 | 技术部 |
| 101 | 300 | 张三 | 技术部 |
| 102 | 450 | 李四 | 市场部 |
下面分几种常见需求给出实现代码:
1. 按员工ID汇总实付金额(求和/均值等)
如果要把同一个员工的实付金额做聚合计算(比如求和),用groupby配合聚合函数就行:
import pandas as pd # 假设你的数据框变量名为df df_aggregated = df.groupby('员工ID')['实付金额'].sum().reset_index()
要是需要其他统计值,把sum()换成mean()(均值)、max()(最大值)这类函数就行,reset_index()是把分组后的索引转回普通列,方便后续使用。
2. 将同一员工的实付金额合并为列表
如果想把同一个员工的所有实付金额放到一个列表里保存:
df_merged_list = df.groupby('员工ID')['实付金额'].apply(list).reset_index()
这样处理后,每个员工ID对应的实付金额列就是该员工所有实付金额组成的列表。
保留其他列的合并方式
如果需要保留员工姓名、部门这类其他列(假设同一员工的这些列值一致),可以用agg指定每列的处理逻辑:
df_full_merge = df.groupby('员工ID').agg( 实付金额=('实付金额', 'sum'), # 这里用求和,也可以换成'list' 员工姓名=('员工姓名', 'first'), # 取分组内第一行的姓名 部门=('部门', 'first') ).reset_index()
这种方式能灵活控制每一列的合并规则,适配不同的业务需求。
内容的提问来源于stack exchange,提问作者jones0207
相关产品推荐
相关产品推荐

