检测错误信息(python/pandas)

2024-04-28 20:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

提前谢谢!!你知道吗


Tags: 数据实例代码信息过滤器目标pandas度量
2条回答

首先,您需要一些产品代码的映射->;度量单位,即基本事实。你可以上传这个,或者试着聪明一点,假设产品代码最常用的度量单位是正确的。你可以这样做

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']]

试试这个:

样品测向:

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)

相关问题 更多 >