17_Pandas重复值处理

一、使用 duplicated() 函数检测重复的行

# 导包
import numpy as np
import pandas as pd

def make_df(indexs,columns):
    data = [[str(j)+str(i) for j in columns] for i in indexs]
    df = pd.DataFrame(data=data,index=indexs,columns=columns)
    return df
  • 返回元素为布尔类型的 Series 对象
  • 每个元素对应一行,如果该行不是第一次出现,则元素为 True
df = make_df([1,2,3,4],list("ABCD"))
df

# 让第一行和第二行值重复
df.loc[1] = df.loc[2]
df

# 判断是否和前面的行重复(第二行和第一行的值重复)
df.duplicated()

# 默认保留第一行
df.duplicated(keep="first")

# 保留最后一行
df.duplicated(keep="last")

# 标记所有的重复行,不保留任何一行
df.duplicated(keep=False)

# 行的值不完全一样的情况
df.loc[1,"D"] = "DDD"
df

df.duplicated()

# subset:子集,指定列的值是否重复
df.duplicated(subset=["A","B","C"])

二、使用 drop_duplicates() 函数删除重复的行

# 删除行的值完全一样的情况
df.drop_duplicates()

# 删除支持列的值一样的行
df.drop_duplicates(subset=["A","B","C"])

# keep:指定保留的行
df.drop_duplicates(subset=["A","B","C"],keep="last")
© 版权声明

相关文章

暂无评论

none
暂无评论...