王小二1号 2023-09-07 23:43 采纳率: 0%
浏览 6

pandas 中的 isin方法查找重复值遗漏数据问题

问个问题,各位小伙伴:

# 查找某个字段是否重复 '单号',删除所有重复的行,一个不留,形成 df2表,原来df1和df2做差吧(广义上的),单拉出一张表 df3,发现行数df3+df2<df1?
import pandas as pd

df1 = pd.read_pickle(r'E:\data.pickle')

df2 = df1.drop_duplicates(subset='单号', keep=False)

df2_list = df2.index.tolist()  # 列表,索引依据

df3 = df1[~df1.index.isin(df2_list)]  # 广义做差
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-08 08:41
    关注

    【以下回答由 GPT 生成】

    以下是使用pandas的isin方法来查找重复行并删除遗漏数据的具体步骤:

    1. 首先,我们需要加载pandas库,并读取数据文件。
    import pandas as pd
    
    # 读取数据
    df1 = pd.read_pickle('E:\data.pickle')
    
    1. 接下来,我们可以使用isin方法查找重复行。我们将根据特定列(这里是'单号'列)的值是否在其他行中,来判断是否是重复行。
    # 使用isin方法查找重复值并删除所有重复的行,形成df2表
    df2 = df1[df1.duplicated(subset='单号', keep=False)]
    

    请注意,我们使用了df1.duplicated()方法来查找重复行,然后配合isin方法,仅保留重复行。

    1. 接下来,我们需要将df2的索引转换为列表。这可以通过使用index.tolist()方法来实现。
    # 将df2的索引转换为列表
    df2_list = df2.index.tolist()
    
    1. 最后,我们可以对df1进行广义做差,得到需要删除的遗漏数据。我们使用~df1.index.isin(df2_list)来检查索引是否在df2_list中,然后使用这个布尔条件来选择需要删除的数据。
    # 对df1进行广义做差,得到df3表
    df3 = df1[~df1.index.isin(df2_list)]
    

    这样,我们就使用pandas的isin方法完成了查找重复行并删除遗漏数据的步骤。如果代码中出现错误,可能是数据类型不匹配导致的,或者数据文件路径不正确,请确保这些细节正确。如果还有其他问题,请告诉我。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月7日