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