一、每日一题
表: 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