首页 > 解决方案 > 将两列的不同值与熊猫进行比较

问题描述

我用这个简单的 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' 的情况。

是否有捷径可寻?

标签: pythonpandasdataframe

解决方案


df.groupby(['A',"B"]).filter(lambda x : len(x)==1)

输出将是

    A   B
2   123 def

推荐阅读