大数据行中熊猫数据不一致

时间:2020-05-15 22:53:28

标签: python pandas dataframe

我有类似的东西:

>>> x = {'id': [1,1,2,2,2,3,4,5,5], 'value': ['a', 'a', 'b', 'b', 'c', 'd', 'e', 'f', 'g']}
>>> df = pd.DataFrame(x)
>>> df
   id value
0   1     a
1   1     a
2   2     b
3   2     b
4   2     c
5   3     d
6   4     e
7   5     f
8   5     g

我要过滤此表中不一致的值。例如,带有id=2id=5的列是不一致的,因为相同的id与不同的值相关联。我已经阅读了有关whereany的解决方案,但它们与“比较是否与此id的列始终具有相同的value相似”。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

对于您而言,我们对groupbytransform + nunique

unc_df=df[df.groupby('id').value.transform('nunique').ne(1)]
   id value
2   2     b
3   2     b
4   2     c
7   5     f
8   5     g

答案 1 :(得分:1)

我想,您可以使用 drop_duplicates 来根据id列删除重复的行:

In [599]: df.drop_duplicates('id', keep='first')    
Out[599]: 
   id value
0   1     a
2   2     b
5   3     d
6   4     e
7   5     f

因此,以上内容将为重复的value列选择第一个id。这样,您在结果数据框中的每个ID就会有1行。

答案 2 :(得分:1)

您可以使用groupby和filter。这应该为您提供编号不一致的ID。

df.groupby('id').filter(lambda x: x.value.nunique()>1)

    id  value
2   2   b
3   2   b
4   2   c
7   5   f
8   5   g