【问题标题】:How to get unique values counts of a column for other boolean columns?如何获取其他布尔列的列的唯一值计数?
【发布时间】:2021-06-26 19:03:46
【问题描述】:

我有一个包含一组列的数据框,所有这些列都是布尔值。我想为每个列(以及相应的布尔值)获取另一列(ID 列)的唯一计数

例如:

data = [
    ["ABC", True, False],
    ["DEF", False, False],
    ["GHI", False, True],
]

df = pd.DataFrame(data, columns=["ID", "CONTAINS_Y", "CONTAINS_X"])

df.groupby("CONTAINS_Y")["ID"].nunique().reset_index()

产量:

  CONTAINS_Y    ID
    False       2
    True        1

我想要一个产生的命令:

  CONTAINS_Y    ID
    False       2
    True        1
  CONTAINS_X    ID
    False       2
    True        1

有没有办法对所有布尔列进行分组以获得唯一计数?还是必须单独完成?

还有其他类似的问题 (Pandas count(distinct) equivalent),但解决方案对我想要实现的目标不起作用。

【问题讨论】:

    标签: pandas pandas-groupby aggregate


    【解决方案1】:

    首先是melt,然后是groupby

    df.melt(id_vars='ID').groupby(['variable', 'value']).nunique()
    
    #                  ID
    #variable   value    
    #CONTAINS_X False   2
    #           True    1
    #CONTAINS_Y False   2
    #           True    1
    

    melt 将您的 DataFrame 从宽格式重新调整为长格式,以便与单个 groupby 一起使用

    df.melt(id_vars='ID')
    #    ID    variable  value
    #0  ABC  CONTAINS_Y   True
    #1  DEF  CONTAINS_Y  False
    #2  GHI  CONTAINS_Y  False
    #3  ABC  CONTAINS_X  False
    #4  DEF  CONTAINS_X  False
    #5  GHI  CONTAINS_X   True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多