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

[每日一练]利用apply函数和lambda函数实现数据的聚合

#该题目来源于力扣:

512. 游戏玩法分析 II - 力扣(LeetCode)

一,题目要求:

Table: Activity+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| player_id    | int     |
| device_id    | int     |
| event_date   | date    |
| games_played | int     |
+--------------+---------+
(player_id, event_date) 是这个表的两个主键(具有唯一值的列的组合)
这个表显示的是某些游戏玩家的游戏活动情况
每一行是在某天使用某个设备登出之前登录并玩多个游戏(可能为0)的玩家的记录
请编写解决方案,描述每一个玩家首次登陆的设备名称返回结果格式如以下示例:示例 1:输入:
Activity table:
+-----------+-----------+------------+--------------+
| player_id | device_id | event_date | games_played |
+-----------+-----------+------------+--------------+
| 1         | 2         | 2016-03-01 | 5            |
| 1         | 2         | 2016-05-02 | 6            |
| 2         | 3         | 2017-06-25 | 1            |
| 3         | 1         | 2016-03-02 | 0            |
| 3         | 4         | 2018-07-03 | 5            |
+-----------+-----------+------------+--------------+
输出:
+-----------+-----------+
| player_id | device_id |
+-----------+-----------+
| 1         | 2         |
| 2         | 3         |
| 3         | 1         |
+-----------+-----------+

二,思路流程:

很经典的数据分组聚合问题。

这道题要求我们返回日期最小的设备id,也就是我们要在对player_id进行分组后,查询出最小的日期,然后返回player_id和device_id。也就是在完成对player_id的分组后,需要对event_date进行最小值的聚合。

对于apply函数的介绍:apply(传入的函数)可以对数据遍历进行相应的函数调用。
对于lambda函数的介绍lambda(x:对于x的函数建立)自定义一个简短的函数解释。可以创建匿名函数

由此可见,通过apply函数内写lambda函数,可以对数据集遍历执行自定义的函数,这种方式可以进行数据的聚合操作

data.groupby('分组列').apply(lambda x:关于x的聚合函数).reset_index()

这便是一个简单的数据分组聚合的函数。

三,代码实现:

import pandas as pddef game_analysis(activity: pd.DataFrame) -> pd.DataFrame:return activity.groupby('player_id').apply(lambda x:x[x['event_date']==x['event_date'].min()]).reset_index()[['player_id','device_id']]

只需要一行便可实现数据的查询


http://www.mrgr.cn/news/52425.html

相关文章:

  • C++ IO多路复用 epoll模型
  • Qml-Item的构造和显示顺序
  • RISC-V笔记——显式同步
  • [openwrt-21.02]openwrt-21.02 升级nat46软件包操作说明
  • 链式法则 反向传播
  • 牵手App红娘来助力,打造线上交友“好管家”
  • JDK、JRE、JVM相关知识点
  • 【IC设计】复旦微行业分析
  • 再见了 印象笔记!推荐一个非常好用的开源笔记系统,8.6k Start(带私活源码)
  • HashMap常见面试题(超全面):实现原理、扩容机制、链表何时升级为红黑树、死循环
  • 028 elasticsearch索引管理-ElasticsearchRestTemplate
  • 七、【智能体】扣子人设:智能体背后的关键设计,你真的了解吗?
  • 纯css实现瀑布流! 附源码!!!
  • JavaSE——方法引用
  • packaged_task 异步调用函数打包
  • AI驱动的零售未来:打造无缝、智能、个性化的购物新世界
  • Gitea迁移外部代码仓库
  • 嵌入式C语言面试相关知识——常见的四种通信协议:I²C、SPI、USART、CAN;一种数据通信机制:DMA
  • Mamba学习笔记(2)—序列数据处理基础
  • 建筑工程管理软件推荐,2024年最佳选择