首页 > 其他分享 >每日一题28:数据操作之删除重复的电子邮件

每日一题28:数据操作之删除重复的电子邮件

时间:2024-05-31 16:28:52浏览次数:13  
标签:sort 排序 False df 28 values 一题 电子邮件 True

一、每日一题

表: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id 是该表的主键列(具有唯一值的列)。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

编写解决方案 删除 所有重复的电子邮件,只保留一个具有最小 id 的唯一电子邮件。

(对于 SQL 用户,请注意你应该编写一个 DELETE 语句而不是 SELECT 语句。)

(对于 Pandas 用户,请注意你应该直接修改 Person 表。)

运行脚本后,显示的答案是 Person 表。驱动程序将首先编译并运行您的代码片段,然后再显示 Person 表。Person 表的最终顺序 无关紧要 。

返回结果格式如下示例所示。

示例 1:

输入: 
Person 表:
+----+------------------+
| id | email            |
+----+------------------+
| 1  | [email protected] |
| 2  | [email protected]  |
| 3  | [email protected] |
+----+------------------+
输出: 
+----+------------------+
| id | email            |
+----+------------------+
| 1  | [email protected] |
| 2  | [email protected]  |
+----+------------------+
解释: [email protected]重复两次。我们保留最小的Id = 1。
# 该程序可以直接运行
import pandas as pd

def delete_duplicate_emails(person: pd.DataFrame) -> None:
    person.sort_values('id', inplace = True)
    person.drop_duplicates(subset = 'email', inplace = True)

    # Example usage:
data = {
        'id': [3, 2, 1],
        'email': ['[email protected]', '[email protected]', '[email protected]']
}

person_df = pd.DataFrame(data)
delete_duplicate_emails(person_df)
print(person_df)

题源:Leetcode

二、总结

这道题考察sort_values和drop_duplicates的用法。下面进行详细解析:

2.1 sort_values用法

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False,
 kind='quicksort', na_position='last', ignore_index=False, key=None)

`sort_values` 是 pandas DataFrame 的一个方法,用于对 DataFrame 按指定的列进行排序。以下是 `sort_values` 方法的详细用法:

参数:

by:必选参数。制定要排序的列或列的列表。

axis:可选参数。用于制定排序的轴。0表示按行排序,1表示按列排序。默认值为0。

ascending:可选参数。布尔值或布尔值列表,制定排序顺序。‘True’表示升序(默认),‘False’表示降序。

inplace:可选参数。指定是否就地修改为DataFrame。True 表示就地修改,False表示返回排序后的副本(默认)。

kind:可选参数。指定排序算法,“quicksort”(默认为快速排序法),“mergesort”,"stable。

na_position:可选参数。指定缺失值的位置,“first”表示将NANs放在前面,“last”表示将NaNs放在后面(默认)。

ignore_index:可选参数。布尔值,指定排序后是否重置索引。‘True'表示重置索引,‘Flase’表示保留原索引(默认)。

key:可选参数。用于提供自定义排序键的函数。

示例:

# 按单列升序排序
df.sort_values(by='column_name')

# 按单列降序排序
df.sort_values(by='column_name', ascending=False)

# 按多列排序
df.sort_values(by=['column1', 'column2'], ascending=False])

# 按多列不同顺序排序
df.sort_values(by=['column1', 'column2'], ascending=[True, False])

# 就地排序
df.sort_values(by='column_name', inplace=True)

# 处理缺失值位置
df.sort_values(by='column_name', na_position='first')

# 重置索引
df.sort_values(by='column_name', ignore_index=True)

2.2 drop_duplicates用法

参照之前博客。

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

subset:可选参数,指定考虑哪些列来判断重复,默认为所有列。你可以传入一列或多列的列名列表(作为字符串列表)来确定重复性。

keep:可选参数,决定如何处理重复项。

'first'(默认):保留每个重复组中的第一个出现的行。
'last':保留每个重复组中的最后一个出现的行。
False:删除所有重复的行。
inplace:可选参数,如果设置为True,则直接在原DataFrame上进行修改,不返回新的DataFrame。

2024.5.31

标签:sort,排序,False,df,28,values,一题,电子邮件,True
From: https://blog.csdn.net/m0_63227758/article/details/139355100

相关文章

  • 扫黑·决不放弃迅雷BT完整下载资源[HD-1280P/3.25GBMKV中字]4k资源分享
    电影《扫黑·决不放弃》是一部以真实事件为背景的警匪题材电影,以纪实的手法讲述了一群警察与黑恶势力的博弈和抗争。该电影在上映后引发了广泛的关注和讨论,不仅展现了中国公安机关对黑恶势力的坚决打击态度,更让观众深刻认识到了黑恶势力对社会的危害以及警察们为维护社会安定......
  • AtCoder Beginner Contest 328
    A-NotTooHard#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;i32main(){ ios::sync_with_stdio(false),cin.tie(nullptr); intn,x; cin>>n&g......
  • 『做题记录』[AGC028C] Min Cost Cycle
    [AGC028C]MinCostCycleDescription  给定一个\(n\)条边的有向完全图,每个点有两个点权\(a,b\)一条边\((u,v)\)的权值为\(\min(a_u,b_v)\)。  求边权和最小的哈密顿回路的边权和。  \(2\leqn\leq10^5,1\leqa,b\leq10^9\)。SolutionPhase1  首先既......
  • 「杂题乱刷」 AT_abc285_e
    好题。直接上代码吧。点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是贪心,是不是该想想dp?一个小时没调出来,是不是该考虑换题?打cf不要用umap!!!记住,rating是身外之物。该冲正解时冲正解!Problem:算法:思路:*/#include<bits/stdc++.h>usingnamespacest......
  • 《计算机网络微课堂》 6-6 电子邮件
    电子邮件是因特网上最早流行的一种应用,并且仍然是当今因特网上最重要对使用的应用之一:传统的电话通信属于实时通信,存在以下两个缺点:第一,电话通信的主叫和被叫双方必须同时在场。第二,一些不是十分紧迫的电话,也常常不必要的打断人们的工作和休息而电子邮件与邮政系统的寄信......
  • [lnsyoj336/luoguP2894/USACO08FEB]Hotel
    题意原题链接给定只包含\(0\)和\(1\)的序列\(a\),支持两种操作:查询\(a\)中最靠左的连续\(x\)个元素均为\(0\)的子串,输出子串的左端点,并将这个子串的所有元素置为\(1\)将\(a\)中以\(x\)开始,长度为\(d\)的子串的所有元素置为\(0\)初始时\(a\)的所有值都为\(0\)sol区间修改,区......
  • 28. 找出字符串中第一个匹配项的下标
    28.找出字符串中第一个匹配项的下标ShowSwiftCodefunccomputePMT(_pattern:String)->[Int]{letm=pattern.lengthvarpmt=[Int](repeating:0,count:m)varj=0foriin1..<m{whilej>0&&pattern[p......
  • 【leetcode每日一题】——2903. 找出满足差值条件的下标 I——python
    给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。你的任务是从范围 [0,n-1] 内找出  2 个满足下述所有条件的下标 i 和 j :abs(i-j)>=indexDifference 且abs(nums[i]-nums[j])>=valueDi......
  • 5.28应急响应思路流程
    1、恶意外联,ip封禁及溯源准备工作:对恶意ip信息收集,如fofa、钟馗之眼、资产绘测等等;受害者信息收集,如:开放端口,判断入侵点;2、现场调研互联网结构,数据流向,核心交互机(是否有服务器);日志审计:windows系统日志中,wife连接日志可以确认安全事件发生时间;是否有态势感知平台,判断外联时间......
  • 视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别
    在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T1400和GB/T28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际应用、功能特性和适用范围上却存在显著的区别。今天我......