如何解决如何映射 Pandas 数据框中的两列值位置 ID、位置名称并发现数据框中的错误?
我的数据集有两列名称 location-id 和 location-name。每个位置名称都有一个唯一的位置 ID。
location-id location-name
234 SL
456 IN
234 SL
123 EN
由于每个位置都有唯一的 id,因此 location-id 列和 location-name 列中的唯一值需要相等。但是 df 中似乎有错误,我的 location-id 有 1863 个唯一值,location-name 有 1800 个唯一值。
有没有办法找出错误发生在哪些条目中?
dict_a = {234:"SL",456:"IN",123:"EN"}
对于每个样本,获取 location-id,检查它是否已经是 dict 中的一个键。如果它已经在,检查与它相关的值。如果当前样本的该值 == location-id,则转到下一个样本。如果值和位置名称不同,则将该新名称作为另一个值添加到同一键。 遍历完整数据集后,获取包含多个值的键值对以发现数据集中的错误。
有没有更有效的方法来做到这一点?
解决方法
使用分组依据,然后按以下方式过滤这些国家/地区:
t=df.groupby(['location-name']).count().reset_index()
df_filtr=df[df['location-name'].isin(t[t['location-id']>1]['location-name'])]
您可以按国家/地区排序以找到正确的条目
,使用布尔掩码查找同一位置 ID 的位置名称是否有多个,反之亦然。
输入数据:
>>> df
location-id location-name
0 234 SL
1 456 IN # IN & BE
2 234 SL
3 123 EN
4 456 BE # IN & BE
5 789 SP # 789 & 987
6 987 SP # 789 & 987
is_non_unique = lambda x: len(x.unique()) > 1
m1 = df.groupby('location-id')['location-name'].transform(is_non_unique)
m2 = df.groupby('location-name')['location-id'].transform(is_non_unique)
err = df[m1|m2]
输出结果:
>>> err
location-id location-name
1 456 IN
4 456 BE
5 789 SP
6 987 SP
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。