前一天,我们简单讨论了一下面对缺失值资料的处理
那今天就反过来讨论一下面对资料中有重复的情况应该要怎麽处理好了
利用集合set
本身就不会包含重复元素的特性,来保留单一的值
但因为set
是无序的,所以重新转回list
的时候就未必会维持原本的顺序
# 使用set,不维持原来顺序
A = [1,3,5,1,2]
list(set(A))
输出:
[1, 2, 3, 5]
要维持本来的顺序其实也有很多种方法,像是把本来的index再拿来排序或是用一堆for的方式,但笔者这边只推荐一种最优雅的方式(都写python了还没事搞那麽多行干嘛XD)
我们这边利用了在python3.6
以後的版本中对於dict
会因为添加的顺序而为有序的特性来进行,所以只需要一行就可以搞定了
# 使用dict,维持原来顺序(限python3.6及以後版本)
A = [1,3,5,1,2]
list(dict.fromkeys(A))
输出:
[1, 3, 5, 2]
如果你好奇这python3.6关於这部分具体的更新内容,可以参考这里
先建立一个有重复资料的范例
# %%
# DataFrame元素去重复
import pandas as pd
df = pd.DataFrame({"Name": ["Alice", "Bob", "Bob", "Bob", "Carol"],
"Score": [100, 95, 97, 97, 95]})
df
# 使用drop_duplicates()方法来去除重复,预设考虑所有column
df.drop_duplicates()
这边可以发现index=3的那笔资料因为和index=2的完全一样,所以就被删除了
# 使用subset参数来控制指定的栏位
df.drop_duplicates(subset=["Name"])
这边我们只考虑Name
栏位,因此1,2,3三笔相同都是Bob
的资料就只会被留下第一笔
# 预设keep="first",可以改成"last"来保留重复的最後一笔资料
df.drop_duplicates(subset=["Name"],keep="last")
<<: 【Day 10】Concurrency control in apps
>>: D25 - 如何用 Apps Script 自动化地创造与客制 Google Sheet?(二)结合股票价格通知与信件
前言: 今天要介绍的是list set 和 map。 大纲: List 是只可读 , 不可修改 va...
完赛心得 今天是铁人赛的最後一天, 一开始以为要写30篇的技术文章有点太难了, 为了写不一样的内容让...
ODOO透过Model来定义资料表中的栏位与关联,我们今天介绍一个Model的类别以及属性。 我们以...
各位安安,今天讲的是对任何程序语言都很重要也很基础的流程控制和回圈的概念,如果你先前已经学过其他程序...
前言 今天我们来看看, 当创建一个 task 物件, 设定完要做的行为已及排程方式後, 会调用两个方...