python - 检测不良信息(python/pandas)
问题描述
我是 python 和 pandas 的新手,我想知道我是否能够让 pandas 过滤掉数据帧中不一致的信息。例如,假设我有一个包含 2 列、(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']]
推荐阅读
- java - 无法使用 FXML 按钮列表
- python - python add_argument 参数定义
- python - 用于 Collatz 猜想的 Python 脚本,或者一般来说,在某些时候重复某些数字的任何其他数字序列
- python - 解析 JSON 以创建函数
- powershell - 使用变量名 powershell 访问对象
- c# - 为什么 EF Core 最后要添加一个额外的 ORDER BY
- flutter - 使用 TextFormField -> onSaved 时将字符串值设置为类
- android - 无法在 Android 中解析符号 repeatOnLifecycle
- angular - 如何编写角度测试用例来覆盖 array.find()
- python - 通过 Python Socket 库向研华 ADAM-6024 发送命令和接收数据