python - 将两列的不同值与熊猫进行比较
问题描述
我用这个简单的 DataFrame 玩了一下。
A B
0 123 abc
1 123 abc
2 123 def
3 456 def
4 456 def
我想检查 A 列中每个不同值的 B 列值是否始终相同。例如 A 列中的“123”必须始终与 B 列中的“abc”相对应。
这是我到目前为止所尝试的:
df2 = df[['A','B']].drop_duplicates()
df[(df['A'] == df2['A']) & (df['B'] == df2['B'])].values
但我收到一个错误,因为 DataFrames 的索引不一样。
然后我尝试使用列表但没有成功。
test=list(set(df['A']))
for l in test:
df[df.A== l].B.drop_duplicates()
在像我使用过的那样的小型 DataFrame 中很容易看到,但是如何在更大的 DataFrame 中轻松检查它,比如 43K 条目?
编辑
感谢答案,我知道我可以过滤多种组合,如下所示:
df.groupby('A').filter(lambda x: x['B'].nunique()> 1)
不幸的是,这个解决方案返回
A B
0 123 abc
1 123 abc
2 123 def
我只需要像这样的输出
A B
0 123 def
找出那些 '123' 不完全对应于 'abc' 的情况。
是否有捷径可寻?
解决方案
df.groupby(['A',"B"]).filter(lambda x : len(x)==1)
输出将是
A B
2 123 def
推荐阅读
- scala - 使用特定于版本的 scala 编译器选项
- database - 数据库/工作流解决方案
- security - 将有效负载发送到阻止请求的服务器
- python - 为什么我在调用我的方法时有两个参数?
- local-storage - 如何从 blazor 的本地存储中获取所有项目?
- elasticsearch - 如何查看弹性搜索中定义的自定义分析器?
- apache-nifi - 从 json 数组 Nifi 中提取特定字段
- java - 使用 JComboBox 取消突出显示 JCalendar 中的日期
- c# - 使用不同的模式通过 Entity Framework Core 将多个数据库连接到 .NET 核心项目
- android - 断开发件人投射设备后,如何让我的 android 电视应用程序继续运行?