pandas删除数据&重复值处理
【摘要】 删除数据 根据列名删除列使用 drop 来删除某列,指定要删除的轴,与对应 列/行 的 名称/索引。df.drop('name', axis = 1) # 删除单列df.drop(['name', 'age'], axis = 1) # 删除多列 根据索引删除行与上面删除列的方式相似,不过这里指定的是索引。df.drop(0, axis=0) # 删除单行df.drop([0, 1]...
删除数据
根据列名删除列
使用 drop
来删除某列,指定要删除的轴,与对应 列/行 的 名称/索引。
df.drop('name', axis = 1) # 删除单列
df.drop(['name', 'age'], axis = 1) # 删除多列
根据索引删除行
与上面删除列的方式相似,不过这里指定的是索引。
df.drop(0, axis=0) # 删除单行
df.drop([0, 1], axis=0) # 删除多行
使用 loc 定位数据并删除
先使用 loc
定位某条件的数据,再获取索引 index
,然后使用 drop
删除。
df.drop(df.loc[df['name'] == '娜美'].index, axis=0) # 删除定位到的行
使用 del 删除列
del
是在原数据上进行修改,使用是要注意。
del df['age']
同时删除行、列
drop
也可以同时指定行列进行删除,这里删除第一、二行并删除 age
列。
df.drop(columns=['age'], index=[0, 1])
删除重复值
- 指定
subset
,则根据指定的列作为参考进行去重,即如果某两行a
值相同,则会删除第二次的出现的那一行,只保留第一次 - 不指定
subset
,则根据所有列作为参考进行去重,只有两行数据 完全相同 才会进行去重。
df.drop_duplicates(subset=['a'], keep='first')
df.drop_duplicates(keep='first')
筛查重复值
示例数据
df = pd.DataFrame({'name':['Python',
'Python',
'Java',
'Java',
'C'],
'count': [2, 2, 6, 8, 10]})
判断某列是否有重复值
使用 values_counts()
对列中各值出现次数进行统计。结果默认按照降序进行排列,只需要判断第一行值的出现次数是否为1即可判断是否存在重复值。
df['a'].value_counts()
使用 drop_duplicates()
对重复值进行删除,只保留第一次出现的值,判断处理后的值是否与原 df
相等,如果 False
就表示有重复值。
df.equals(df.drop_duplicates(subset=['a'], keep='first'))
False
判断 DataFrame 是否有重复行
同样是使用 drop_duplicates()
对重复值进行删除,只保留第一次出现的值,此时不使用 subset
参数设置列,默认为全部列,判断处理后的值是否与原 df
相等,如果 False
就表示有重复值。
df.equals(df.drop_duplicates(keep='first'))
False
统计重复行的数量
注意这里的统计是参照所有列来的,只有两行完全相同才会判断为重复行,所以统计的结果是 1 。
len(df) - len(df.drop_duplicates(keep="first"))
1
显示重复的数据行
先删除重复的行,只保留第一次出现的,得到一个 行唯一 的数据集,再使用 drop_duplicates()
删除掉 df
中存在重复的所有数据,这次不保留第一次出现的重复值,将上述两个结果集进行合并,使用 drop_duplicates()
对新生成的数据集进行去重,即可得到重复行的数据。
df.drop_duplicates(keep="first")\
.append(df.drop_duplicates(keep=False))\
.drop_duplicates(keep=False)
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)