景点介绍网站模板,小型购物网站建设,营销公司官网,怎么更换网站图片问题说明#xff1a; 前几天在Python最强王者交流群【群除我佬】问了一个Pandas处理的问题#xff0c;这里拿出来给大家分享下。
看上去不太好理解#xff0c;其实说白了#xff0c;就是在工资最高里#xff0c;再找时间最早的。
换句话说就是#xff0c;这三个人…问题说明 前几天在Python最强王者交流群【群除我佬】问了一个Pandas处理的问题这里拿出来给大家分享下。
看上去不太好理解其实说白了就是在工资最高里再找时间最早的。
换句话说就是这三个人每个人找工资最高然后在这个范围里找时间最早 就是他的调薪时间。 解决方法
这里我们提供一种解决方案
import pandas as pddata {name: [陈六, 吴三, 吴三, 陈六, 钱十, 陈六, 吴五, 吴五, 陈六, 吴八, 钱十, 陈六],date: [2024-01-04, 2024-01-13, 2024-01-29, 2024-01-12, 2024-01-20, 2024-01-19, 2024-01-27,2024-01-20, 2024-01-09, 2024-01-08, 2024-01-14, 2024-01-28],salary: [6026, 5352, 5791, 9567, 9728, 6160, 9015, 9508, 9253, 9570, 8690, 7395]}df pd.DataFrame(data)
print(df.sort_values([name, salary, date], ascending[True, False, True]).groupby([name]).head(1))
结果展示 代码说明
print(df.sort_values([name, salary, date], ascending[True, False, True])
排序 DataFrame: df.sort_values([...]): 对 DataFrame df 进行排序。[name, salary, date]: 表示按 name、salary 和 date 三列进行排序。ascending[True, False, True]: 对 name 列进行升序排列即 A 到 Z。对 salary 列进行降序排列即从高到低。对 date 列进行升序排列即从早到晚。 经过这一步DataFrame 将首先按姓名升序排列在同一姓名下按薪资降序排列如果薪资相同则按日期升序排列。 .groupby([name]).head(1)
分组并选取第一条记录: .groupby([name]): 根据 name 列将 DataFrame 分组这会将具有相同名字的行聚集在一起。.head(1): 从每个分组中提取前一行。由于之前已经按薪资降序排列因此每个姓名组的第一行将是该姓名下薪资最高的记录。 打印结果: 最终代码会输出一个 DataFrame其中每个员工姓名只会保留薪资最高的一条记录若有多个相同薪资则选择日期最早的记录。
概要总结
这段代码的主要目的是从 DataFrame 中提取每个员工薪资最高且在先的记录。首先按姓名和薪资进行排序然后分组并获取每个员工的最高薪资记录。