【笔记】LeetCode计划——30天Pandas挑战(4)

简介: LeetCode1148题——文章浏览|
+关注继续查看

LeetCode1148题——文章浏览|

一、题目
image.png
此表可能会存在重复行。(换句话说,在 SQL 中这个表没有主键)
此表的每一行都表示某人在某天浏览了某位作者的某篇文章。
请注意,同一人的 author_id 和 viewer_id 是相同的。
请查询出所有浏览过自己文章的作者,结果按照 id 升序排列。

二、官方题解与思路整理
行过滤法思路:
①找到判断作者是否评论了自己文章的条件,即 author_id 等于 viewer_id。根据此条件过滤所有 views 行,并确定满足条件的行。
②可能会在 author_id 列(例如,author_id = 4 的作者查看了他的文章多次)中遇到重复的作者,需要删除重复项。
③将 author_id 列重命名为id并按升序排序。

官方题解:

import pandas as pd

def article_views(views: pd.DataFrame) -> pd.DataFrame:
    df = views[views['author_id']==views['viewer_id']]#仅选择满足条件的行
    #仅保留包含唯一的'author_id'的行
    df.drop_duplicates(subset=['author_id'],inplace=True)
    #按'author_id'列升序排序DataFrame
    df.sort_values(by=['author_id'],inplace=True)
    #将'author_id'列重命名为'id'
    df.rename(columns={
   'author_id':'id'},inplace=True)

    df=df[['id']]

    return df

三、自己的记录
1、布尔索引允许我们通过使用布尔数组或条件来过滤 DataFrame。可以使用布尔值的 Series 或创建对于 DataFrame 中每一行都评估为 True 或 False 的条件。通过将这些布尔值或条件应用为 DataFrame 的索引,可以选择性地提取满足条件的行。
2、过滤后可能会在 author_id 列(例如,author_id = 4 的作者查看了他的文章多次)中遇到重复的作者。drop_duplicates() 方法可以选择不重复的 author_ids,即移除任何重复项。
3、drop_duplicates()方法的参数设置
①subset:它指定应该考虑哪些列来查找重复项。如果未指定,将使用 DataFrame 中的所有列来识别重复项。在我们的情况下,我们将其设置为 ['author_id'] ,因此仅考虑author_id列中的重复项。
②inplace:这是一个布尔参数,用于确定方法是否应该对原始 DataFrame 进行就地修改,还是返回一个删除了重复项的新 DataFrame。我们将其设置为 True,表示原地修改。

目录
相关文章
|
3月前
|
SQL Python
【笔记】LeetCode计划——30天Pandas挑战(5)
LeetCode1683题——无效的推文
23 0
|
3月前
|
索引 Python
【笔记】LeetCode计划——30天Pandas挑战(3)
LeetCode183题——从不订购的客户
73 1
|
3月前
|
Python
【笔记】LeetCode计划——30天Pandas挑战(2)
LeetCode1757题——可回收且低脂的产品
39 1
|
3月前
|
Python
【笔记】LeetCode计划——30天Pandas挑战(1)
LeetCode595题——大的国家 记录自己的学习心得以及解题时学到的知识和要注意的点
76 0
|
12月前
代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形
代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形
代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形
|
12月前
代码随想录刷题|LeetCode 739. 每日温度 496.下一个更大元素 I
代码随想录刷题|LeetCode 739. 每日温度 496.下一个更大元素 I
|
12月前
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
|
12月前
代码随想录刷题|LeetCode 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇
代码随想录刷题|LeetCode 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇
|
12月前
|
算法
代码随想录刷题|LeetCode 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划
代码随想录刷题|LeetCode 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划
代码随想录刷题|LeetCode 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划
|
12月前
|
算法
代码随想录刷题|LeetCode 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
代码随想录刷题|LeetCode 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
代码随想录刷题|LeetCode 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
热门文章
最新文章
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多