Python中pandas删除数据表中的重复值的实现
作者:蒋亦森
Python中删除数据表中重复值的方法非常多,本文主要讲解的是pandas中的drop_duplicates()方法去重。
引用pandas
import pandas as pd
若没有pandas类包,通过pip install进行安装。在终端中输入:
pip install pandas
创建数据表:
date_range = pd.date_range(start='2025-01-01', periods=6) # 生成日期数据 df = pd.DataFrame({'id': [1001, 1002, 1003, 1004, 1005, 1006], 'data': date_range, 'city': ['beijing', 'shanghai', 'beijing', 'Shengzhen', 'wuhan', 'beijing'], 'price': [23, 30, 23, 54, 26, 25]}, columns=['id', 'data', 'city', 'price'])
输出结果为:
print(df)
通过输出的数据表可以看出,city中第0行、第2行、第5行数据重复,要想删除重复数据的行,在pandas中可以使用drop_duplicates()函数进行删除。
drop_duplicates()函数说明:
来源于frame.py,主要参数说明如下:
subset:表示要去重的列名,默认为None。
keep:first、last、False;first表示保留首次出现的数据,last表示保留最后一个数据,False表示重复的数据全部不留。
inplace:True、False;True表示基于原数据表进行修改,False表示去重后生成一个新的copy对象。
例:
# 在原表中删除city中重复的内容,并保留首次出现的数据 df.drop_duplicates(subset=['city'],keep='first',inplace=True)
输入结果为:
保留了第0行,删除第2行、第5行的数据。以此类推:当keep=last时,将保留第5行数据,当keep=False时,删除第0行、第2行、第5行数据。
上述为inplace=True时,在原数据表df表中对数据进行了更改。
当inplace=False时,程序将会copy一个新的数据表,在新copy的数据表中进行删除,不会影响原表的数据。
例:
df.drop_duplicates(subset=['city'],keep='first',inplace=False) print(df)
此时输出的df数据表结果为:
df数据表中的数据没有发生变化,表示此时修改的对象非df数据表。
# 删除df数据表city列中重复的数据,并赋值值给df2 df2 = df.drop_duplicates(subset=['city'],keep='first',inplace=False) print(df2)
此时输出的df2数据表结果为:
从上述结果看出,当inplace=False时,程序将会copy一个新的数据表,在新copy的数据表中对重复的数据进行删除。
补充说明:
在pandas中还有一个drop_duplicates(),该方法来源于series.py。使用时会生成一个新的数据表,在使用时inplace不能为True,否则会返回None。
例:
df3 = df['city'].drop_duplicates(keep='first',inplace=False)
输出结果为:
到此这篇关于Python中pandas删除数据表中的重复值的文章就介绍到这了,更多相关pandas删除重复值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!