【问题标题】:Python Pandas countifs with unique values具有唯一值的 Python Pandas 计数
【发布时间】:2021-11-06 10:13:18
【问题描述】:

我有一个包含条目的数据集,其中一列是标识符,比方说列 A。我想计算列 A 中有多少条目是唯一的,以及列 B 位于 x 和 y 之间以及列 C等于 z。

举例:

Row Column A Column B Column C
1 1001 4 1
2 1001 3 0
3 1001 6 1
4 1001 4 1
5 1002 7 0
6 1002 7 1
7 1002 2 1
8 1002 3 1
9 1003 0 1
10 1003 3 0
11 1003 3 1
12 1003 4 1

我想要达到的目标如下: 计算 A 列有多少个唯一值,其中 B 列中有 2-4 之间的两个条目,并且 C 列等于 1。

查看表格将返回 1,因为只有 A=1002 列满足所有条件(第 7 行和第 8 行)。

我尝试了一些代码,但我不知道如何使用 A 列中的唯一值标准来取得成功。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这应该可以。首先,我根据您的条件进行子集化,然后计算出现次数,检查它是否为 2,然后将它们相加。

    sum(df[(df['Column B ']> 1) & (df['Column B ']<4) & (df['Column C'] == 1)]['Column A '].value_counts() == 2)
    

    【讨论】:

      【解决方案2】:

      首先创建一个过滤数据框的条件

      con = df['Column B'].between(2,4) & df['Column C'].eq(1)
      

      然后使用groupby 操作。

      df.loc[con].groupby('Column A')['Column A'].nunique()
      
      Column A
      1001    1
      1002    1
      1003    1
      Name: Column A, dtype: int64
      

      df.loc[con]
      
          Row  Column A  Column B  Column C
      0     1      1001         4         1
      3     4      1001         4         1
      6     7      1002         2         1
      7     8      1002         3         1
      10   11      1003         3         1
      11   12      1003         4         1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多