【问题标题】:How to count no of rows in a data frame whose values divisible by 3 or 5?如何计算数据框中的值可被 3 或 5 整除的行数?
【发布时间】:2020-01-24 11:32:08
【问题描述】:

我有一个包含两列的数据框:

 ones   zeros
0   6   13
1   8   7
2   11  7
3   8   5
4   11  5
5   10  6
6   11  6
7   7   4
8   9   4
9   4   6
10  7   5
11  6   7
12  9   10
13  14  3
14  7   7
15  7   7
16  9   7
17  7   10
18  9   5
19  12  7
20  4   8
21  6   4
22  11  5
23  9   7
24  3   10
25  7   4
26  6   12
27  9   7
28  7   4
29  9   9
... ... ...
4339    10  9
4340    7   10
4341    6   11
4342    4   6
4343    9   11
4344    5   11
4345    7   9
4346    9   5
4347    11  7
4348    9   10
4349    8   10
4350    6   5
4351    5   8
4352    5   7
4353    5   8
4354    7   13
4355    11  3
4356    6   7
4357    7   6
4358    8   12
4359    8   11
4360    7   11
4361    6   13
4362    8   3
4363    11  8
4364    9   3
4365    6   5
4366    9   6
4367    11  8
4368    4   3 

我需要计算ones 列下的数字可以被5 整除或zeros 列下的数字可以被3 整除的行数。

因为这是问题的子部分。我已经准备好清理后的数据框,数据框有 2 列和 4369 行。

我试过这个,但这不是条件“OR”的解决方案,而是“AND”的解决方案

score['count_zeros'].value_counts(dropna=False)
score['count_ones'].value_counts(dropna=False)

我需要 OR 条件的解决方案

【问题讨论】:

    标签: python pandas dataframe data-analysis


    【解决方案1】:

    我们也可以使用query方法进行过滤,结合pandas方法Series.modeq代表equal

    df = df.query('ones.mod(5).eq(0) | zeros.mod(3).eq(0)')
    
        ones  zeros
    5     10      6
    6     11      6
    9      4      6
    13    14      3
    26     6     12
    29     9      9
    30    10      9
    33     4      6
    35     5     11
    36     7      9
    42     5      8
    43     5      7
    44     5      8
    46    11      3
    48     7      6
    49     8     12
    53     8      3
    55     9      3
    57     9      6
    59     4      3
    

    【讨论】:

      【解决方案2】:

      比较模 530 并通过 boolean indexing| 过滤以获取按位 OR

      df = df[(df['ones'] % 5 == 0) | (df['zeros'] % 3 == 0)]
      print (df)
            ones  zeros
      5       10      6
      6       11      6
      9        4      6
      13      14      3
      26       6     12
      29       9      9
      4339    10      9
      4342     4      6
      4344     5     11
      4345     7      9
      4351     5      8
      4352     5      7
      4353     5      8
      4355    11      3
      4357     7      6
      4358     8     12
      4362     8      3
      4364     9      3
      4366     9      6
      4368     4      3
      

      如果需要统计匹配值的个数:

      out = ((df['ones'] % 5 == 0) | (df['zeros'] % 3 == 0)).sum()
      print (out)
      20
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 1970-01-01
        • 2015-11-16
        • 2021-06-05
        • 2014-07-18
        • 2015-08-08
        • 2022-11-08
        相关资源
        最近更新 更多