【问题标题】:Checking if a column has the same values if the other column has the same value如果另一列具有相同的值,则检查一列是否具有相同的值
【发布时间】:2021-11-25 15:39:33
【问题描述】:

我在 Pandas 数据框中有两个字符串列。 Column1 有数千个不同的值,但 column2 有五个字符串之一,例如 A、B、C、D 和 E。

如果column1中的值相同,我想检查column2是否具有相同的值,如果它们不同,则标识行的索引。

idx  col1  col2
1    X     A
2    Y     B
3    Y     B
4    X     A
5    Z     C
6    X     B

在上面,第 2 行和第 3 行在 column1 中具有相同的值,并且在 column 中的值相同。所以没关系。 对于第 1、4 和 6 行,A 列中通常为 X,但第 2 列中的值不同(A、A 和 B)。

我需要检查 Pandas 数据框是否满足此要求,并识别第 1、4 和 6 行或值 X(如果有)。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用GroupBy.transformDataFrameGroupBy.nunique 获取行而不是每组唯一值的数量等于1

    df1 = df[df.groupby('col1')['col2'].transform('nunique').ne(1)]
    print (df1)
       idx col1 col2
    0    1    X    A
    3    4    X    A
    5    6    X    B
    

    或者要获取列col1 的值,请使用DataFrameGroupBy.nunique,过滤器索引为Series

    s = df.groupby('col1')['col2'].nunique()
    vals = s.index[s.ne(1)].tolist()
    print (vals)
    ['X']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2012-05-25
      • 1970-01-01
      • 2019-05-31
      相关资源
      最近更新 更多