检测错误信息(python/pandas)

检测错误信息(python/pandas),python,pandas,Python,Pandas,我是python和pandas的新手,我想知道我是否能够让pandas过滤掉数据帧中不一致的信息。例如,假设我有一个包含两列的数据框,(1)产品代码,(2)度量单位。第1列中的同一产品代码可能重复多次,并且会有多个不同的产品代码,我想过滤掉同一产品代码中有超过1个计量单位的产品代码。理想情况下,当这种情况发生时,过滤器将带来此类产品代码的所有实例,而不仅仅是度量单位不同的实例。为了使我的要求更具色彩,这里的真正目标是识别测量单位不一致的产品代码,因为在所有情况下,相同的产品代码应该始终具有相同的

我是python和pandas的新手,我想知道我是否能够让pandas过滤掉数据帧中不一致的信息。例如,假设我有一个包含两列的数据框,(1)产品代码,(2)度量单位。第1列中的同一产品代码可能重复多次,并且会有多个不同的产品代码,我想过滤掉同一产品代码中有超过1个计量单位的产品代码。理想情况下,当这种情况发生时,过滤器将带来此类产品代码的所有实例,而不仅仅是度量单位不同的实例。为了使我的要求更具色彩,这里的真正目标是识别测量单位不一致的产品代码,因为在所有情况下,相同的产品代码应该始终具有相同的测量单位


提前谢谢

首先,您需要一些产品代码->度量单位的映射,即基本事实。您可以上传此信息,也可以尝试巧妙地从数据中推导出来,假设产品代码最常用的度量单位是正确的。你可以这样做

truth_mapping = df.groupby(['product_code'])['unit_of_measurement'].agg(lambda x:x.value_counts().index[0]).to_dict()
然后你可以得到一个列,它是“正确的”度量单位

df['correct_unit'] = df['product_code'].apply(truth_mapping.get)
然后可以筛选到没有正确映射的行:

df[df['correct_unit'] != df['unit_of_measurement']]
试试这个:

样本df:

df12= pd.DataFrame({'Product Code':['A','A','A','A','B','B','C','C','D','E'],
                   'Unit of Measurement':['x','x','y','z','w','w','q','r','a','c']})
分组方式,并查看所有非唯一对的计数:

new = df12.groupby(['Product Code','Unit of Measurement']).size().reset_index().rename(columns={0:'count'})
删除重复产品代码的所有行

new.drop_duplicates(subset=['Product Code'], keep=False)

给出您的输入数据帧和预期输出,以获得极快的回复!!!我会好好玩玩,看看能不能成功。会让你知道这是怎么发展的!更新!它比我想象的要好,我可以用它做很多事情!再次感谢你!hcmw,我在实现我的真实代码时遇到了一个问题。。。获取密钥错误:“产品代码”。有什么想法吗?这对我的模拟代码起了作用。。。我可能遗漏了一些东西。我猜你没有一个名为“product_name”的列,它的名称可能稍有不同,或者是索引。如果你做了
df.columns
,你应该能够列出你所有的专栏感谢回复Rahul!我将尝试您建议的解决方案,并尽快通知您!干杯Rahul,我尝试了上面的方法,前两行代码用来计算每个代码都有一个给定UM的实例数。但是代码的第三行并没有改变输出。。。我错过什么了吗?无论如何,这已经很有用了,我结合了为这个问题提供的两个解决方案,得到了非常有用的结果。谢谢
new.drop_duplicates(subset=['Product code'],keep=False)
如果您指的是这一行,那么这将删除所有映射不正确的行。在上面的示例行中,它有“A”和“C”Rahul,由于我的名声不好,我无法投票,因为我昨天加入了。我认为另一个答案对我的要求更有用。所以我接受了另一个答案。尽管如此,如果我能接受这两个答案,我会的!干杯