检测不良信息(python / pandas)

时间:2018-11-13 14:39:48

标签: python pandas

我是python和pandas的新手,我想知道我是否能够让pandas过滤出不一致的数据框中的信息。例如,假设我有一个包含2列的数据框,(1)产品代码和(2)度量单位。第1列中的同一产品代码可能重复多次,并且会有几种不同的产品代码,我想过滤出对于同一产品代码,其计量单位超过1个的产品代码。理想情况下,当这种情况发生时,过滤器将带入此类产品代码的所有实例,而不仅仅是度量单位不同的实例。为了满足我的要求,这里的真正目的是确定度量单位不一致的产品代码,因为相同的产品代码在所有情况下都应始终具有相同的度量单位。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

首先,您需要某种产品代码映射->度量单位,即基本事实。您可以上传此文件,也可以尝试从数据中获取巧妙信息,前提是假定产品代码最常用的度量单位是正确的度量单位。您可以通过

来获得
+-------------------+-------------+----------------------+------------------+----------------------+
| EDI_Assessment_ID |   Bathing   | ADL_Assisted_By_Info | Continence-Bowel | ADL_Assisted_By_Info |
+-------------------+-------------+----------------------+------------------+----------------------+
|             12345 | Independent | No one               | Independent      | No one               |
+-------------------+-------------+----------------------+------------------+----------------------+

然后您将获得一列,它是“正确”的计量单位

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)

答案 1 :(得分:0)

尝试一下:

样本df:

new = df12.groupby(['Product Code','Unit of Measurement']).size().reset_index().rename(columns={0:'count'})

分组依据,查看所有非唯一对的计数:

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

删除重复产品代码的所有行

{{1}}