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)]  # 广义做差

【以下回答由 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方法完成了查找重复行并删除遗漏数据的步骤。如果代码中出现错误,可能是数据类型不匹配导致的,或者数据文件路径不正确,请确保这些细节正确。如果还有其他问题,请告诉我。



【相关推荐】



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

原df是通过合并来的,索引没有重置,就是索引中0123...0123...有多个,因为索引有相同的,所以查询就查多了,取反就少了