[每日一练]通过自连接实现混合列的筛选(pandas解法)

#该题目来源于力扣:

1241. 每个帖子的评论数 - 力扣(LeetCode)

 题目要求:

表 Submissions :+---------------+----------+
| 列名          | 类型     |
+---------------+----------+
| sub_id        | int      |
| parent_id     | int      |
+---------------+----------+
上表可能会出现重复的行。
每行可以是一个帖子或对该帖子的评论。
如果这是一篇帖子,则 parent_id 为 null。
如果这是一条评论,则 parent_id 对应帖子的 sub_id。编写一个解决方案以查找每个帖子的评论数。结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 。Submissions 可能包含重复的评论。你应该统计出每个帖子的 唯一评论 的数目。Submissions 可能包含重复的帖子。你应该将它们视为一个帖子。返回结果表应该按 post_id 升序排序。结果格式如下例所示。示例 1:输入:
Submissions table:
+---------+------------+
| sub_id  | parent_id  |
+---------+------------+
| 1       | Null       |
| 2       | Null       |
| 1       | Null       |
| 12      | Null       |
| 3       | 1          |
| 5       | 2          |
| 3       | 1          |
| 4       | 1          |
| 9       | 1          |
| 10      | 2          |
| 6       | 7          |
+---------+------------+
输出:
+---------+--------------------+
| post_id | number_of_comments |
+---------+--------------------+
| 1       | 3                  |
| 2       | 2                  |
| 12      | 0                  |
+---------+--------------------+
解释:
表中 ID 为 1 的帖子有 ID 为 3、4 和 9 的三个评论。表中 ID 为 3 的评论重复出现了,所以我们只对它进行了一次计数。
表中 ID 为 2 的帖子有 ID 为 5 和 10 的两个评论。
表中 ID 为 12 的帖子没有评论。
表中 ID 为 6 的评论是对 ID 为 7 的已删除帖子的评论,因此我们将其忽略。

题目解释:

意思就是说,在针对全表进行去重之后,如果sub_id(帖子或评论的id列)对应的parent_id(评论的帖子id)为null,说明sub_id在列中是表示帖子的,如果sub_id对应的parent_id不为null,说明这里的sub_id是评论,而这里的parent_id就是评论的帖子id,对应的是parent_id为null的sub_id。现在要求统计每个帖子(非null的parent_id)被(对应parent_id为null的post_id)评论了多少次?

思路流程:

首先先取出parent_id为null的数据,这样就可以得到所有的sub_id是帖子的值,储存到变量submissions_1中。然后将submissions_1和原数据集进行左连接,保留所有submissions_1的值,按照submissions_1的sub_id和submissions的parent_id进行连接,这样被连接的submissions表的parent_id就自动去除了所有的非帖子值,实现了数据的初步清洗。清洗后,对连接的数据集进行去重后的分组聚合即可统计出所有作为贴子的parent_id的唯一评论数量sub_id有多少

代码实现:

import pandas as pddef count_comments(submissions: pd.DataFrame) -> pd.DataFrame:submissions_1=submissions.query('parent_id.isnull()')data=submissions_1.merge(submissions,how='left',left_on='sub_id',right_on='parent_id')data=data.drop_duplicates().groupby('sub_id_x').agg({'sub_id_y':'count'}).reset_index().rename(columns={'sub_id_x':'post_id','sub_id_y':'number_of_comments'})return data

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Playwright——快速入门(初章)

Playwright:引领自动化测试的未来 在数字化时代,Web应用的复杂性和用户期望的提高对软件测试提出了更高的要求。微软开发的Playwright,作为一个创新的自动化测试框架,正以其卓越的性能和全面的浏览器支持,重新定义Web…

ssm094学生宿舍管理+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:学生宿舍管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生宿舍管理系统…

Redis中的过期删除与内存淘汰

1.Redis中的过期删除策略 在 Redis 中,过期删除策略是为了管理存储在 Redis 中的带有过期时间的数据。每当数据存储时,可能会为其设定一个过期时间。当到达这个时间点后,该数据就被标记为“过期”。为了确保不再需要的过期数据不会占用系统资…

Kubernetes 中的 GPU 管理与 Device Plugin 机制深度解析

Kubernetes 中的 GPU 管理与 Device Plugin 机制深度解析 在现代计算领域,GPU(图形处理器)的强大计算能力越来越受到重视。Kubernetes 作为一种流行的容器编排平台,也提供了对 GPU 资源的管理和使用支持。本节课将深入剖析 Kubernetes 中的 GPU 管理与 Device Plugin 机制…

机器学习——贝叶斯

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…

Leetcode 3352. Count K-Reducible Numbers Less Than N

Leetcode 3352. Count K-Reducible Numbers Less Than N 1. 解题思路2. 代码实现 题目链接:3352. Count K-Reducible Numbers Less Than N 1. 解题思路 这一题的话思路上我是拆成了两步来做的,首先,我们要认识到,这里的变化本质…

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…

232转485模块测试

概述 常用的PLC一般会有两个左右的232口,以及两个左右的485口,CAN口等,但是PLC一般控制的设备可能会有很多,会超出通讯口的数量,此时我们一般会采用一个口接多个设备,这种情况下要注意干扰等因素&#xff0…

科技资讯|Matter 1.4 标准正式发布,低功耗蓝牙助力其发展

连接标准联盟(CSA)宣布推出最新的 Matter 1.4 版本,引入了一系列新的设备类型和功能增强,有望提高包括 HomeKit 在内的智能家居生态系统之间的互操作性。 设备供应商和平台能够依靠增强的多管理员功能改善多生态系统下的用户体验&…

@ComponentScan注解引发外部请求无法处理的解决办法

ComponentScan注解引发外部请求无法处理的解决办法 问题起因 最近通过maven从项目中拆分出模块module-db和模块module-seckill 模块module-db主要通过mybatisplus实现数据库的操作,并封装业务接口; 模块module-seckill引入module-db依赖,…

SpringBoot实现文件上传并返回url链接

检查依赖 确保pom.xml包含了Spring Boot Web的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>创建Controller 创建公用上传文件控制器 package…

Chrome DevTools Protocol 入门:相关概念

前言 在上篇文章中&#xff0c;我们快速地使用了 Chrome DevTools Protocol&#xff08;CDP&#xff09;发送指令&#xff0c;成功实现了一些浏览器自动化操作。然而&#xff0c;要想深入使用 CDP&#xff0c;还需要对其中的 协议概念 有更深入的理解。这些概念不仅是我们与浏…

FPGA学习笔记#7 Vitis HLS 数组优化和函数优化

本笔记使用的Vitis HLS版本为2022.2&#xff0c;在windows11下运行&#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e&#xff0c;主要根据教程&#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记&#xff1a;《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…

苍穹外卖05-Redis相关知识点

目录 什么是Redis&#xff1f; redis中的一些常用指令 value的5种常用数据类型 各种数据类型的特点 Redis中数据操作的常用命令 字符串类型常用命令&#xff1a; 哈希类型常用命令 列表操作命令 集合操作命令 有序集合操作命令 通用命令 在java中操作Redis 环境…

SpringBoot(八)使用AES库对字符串进行加密解密

博客的文章详情页面传递参数是使用AES加密过得,如下图所示: 这个AES加密是通用的加密方式,使用同一套算法,前端和后端都可以对加密之后的字符串进行加密解密操作。 目前线上正在使用的是前端javascript进行加密操作,将加密之后的字符串再传递到后端,PHP再进行解密操作。…

前端常用时间操作汇总

&#xff08;1&#xff09;获取中国标准时间&#xff1a; let now new Date(); ​ // Thu Nov 14 2024 17:13:49 GMT0800 (中国标准时间) &#xff08;2&#xff09;获取年份&#xff1a; let year now.getFullYear(); ​ // 2024 &#xff08;3&#xff09;获取月份&…

【Windows erver】配置高性能电源管理

操作场景 在 Windows Server 操作系统上&#xff0c;需要配置高性能电源管理&#xff0c;才能支持实例软关机&#xff0c;否则云服务器控制台只能通过硬关机的方式关闭实例。本文档以 Windows Server 2012 操作系统为例&#xff0c;介绍配置电源管理的方法。 操作说明 修改电…

《线性代数》学习笔记

列向量无关 上个星期继续学线性代数&#xff0c;一个矩阵&#xff0c;如何判断它是的列向量有几个是线性无关呢&#xff1f;其实有好几个方法。第一个就是一个一个判断。 先选定一个&#xff0c;然后看下这两个&#xff0c;怎么看呢&#xff1f;如果两个列向量线性相关&#…

【JAVA基础】MAVEN的安装及idea的引用说明

本篇文章主要讲解&#xff0c;maven的安装及集成在idea中进行构建项目的详细操作教程。 日期&#xff1a;2024年11月11日 作者&#xff1a;任聪聪 所需材料&#xff1a; 1、idea 2024版本及以上 2、maven 3.9.9安装包 3、一个空java springBoot项目&#xff0c;可以使用阿里云…

Rust学习(二):rust基础语法Ⅰ

Rust学习&#xff08;二&#xff09;——rust基础语法Ⅰ&#xff1a; 1、关键字&#xff1a; 了解编程语言的同学都清楚&#xff0c;关键字在一门编程语言中的意义&#xff0c;所谓关键字就是语言的创造者及后续开发者们&#xff0c;以及定义好的具有特殊含义和作用的单词&am…