当前位置: 首页 > news >正文

【已解决】如何获取到DF数据里最新的调薪时间,就是薪资最高且时间最早?

问题说明:


前几天在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']: 表示按 namesalary 和 date 三列进行排序。
    • ascending=[True, False, True]:
      • 对 name 列进行升序排列(即 A 到 Z)。
      • 对 salary 列进行降序排列(即从高到低)。
      • 对 date 列进行升序排列(即从早到晚)。

经过这一步,DataFrame 将首先按姓名升序排列,在同一姓名下,按薪资降序排列;如果薪资相同,则按日期升序排列。

.groupby(['name']).head(1)
  • 分组并选取第一条记录:
    • .groupby(['name']): 根据 name 列将 DataFrame 分组,这会将具有相同名字的行聚集在一起。
    • .head(1): 从每个分组中提取前一行。由于之前已经按薪资降序排列,因此每个姓名组的第一行将是该姓名下薪资最高的记录。

  • 打印结果: 最终代码会输出一个 DataFrame,其中每个员工姓名只会保留薪资最高的一条记录,若有多个相同薪资,则选择日期最早的记录。
概要总结:
  • 这段代码的主要目的是从 DataFrame 中提取每个员工薪资最高且在先的记录。
  • 首先按姓名和薪资进行排序,然后分组并获取每个员工的最高薪资记录。
http://www.lryc.cn/news/417550.html

相关文章:

  • PyQt5入门
  • 算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】
  • 如何利用Python进行数据分析
  • 如何判断机器学习模型的好坏之LIME和SHAP
  • Android 是如何进行内存管理的
  • 【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏(8.6 已修复)
  • WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)
  • SQL约束
  • lombok使用@slf4j 运行时提示找不到符号log(Missing POM for org.projectors:lombok:jar)
  • 21. 合并两个有序链表(递归)
  • 学习vue3 三,组件基础,父子组件传值
  • 月木学途开发 2.项目架构
  • FPGA开发——按键控制数码管的设计
  • 【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航
  • C语言实现UDP广播
  • 速记Java八股文——Redis 篇
  • CUDA编程05 - GPU内存架构和数据局部性
  • TCP协议程序设计
  • 【C++高阶】:自定义删除器的全面探索
  • Java中的不可变集合、Stream流以及异常处理的
  • LeetCode面试题Day1|LeetCode26 删除有序数组中的重复项、LeetCode80 删除有序数组中的重复项Ⅱ
  • 细说文件操作
  • Vue3从零开始——掌握setup、ref和reactive函数的奥秘
  • C语言练习--屏幕上打印九九乘法表
  • 将tsx引入vue
  • 前端实现签字效果+合同展示
  • [AI Embedchain] 开始使用 - 快速开始
  • Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon
  • Java线程(练习题)
  • MySQL:初识数据库初识SQL建库