【问题标题】:How to see the highest value between two columns of a dataframe and how many values in one column are greater than the other?如何查看数据框两列之间的最大值以及一列中有多少值大于另一列?
【发布时间】:2019-06-22 23:19:32
【问题描述】:

我需要比较数据框的两列 (a, b),以查看 Pandas 中有多少“a”值大于“b”。

我已经尝试过这种方式,但我不知道这是否是最佳选择:

def result(y,z):
    if(y > z):
          return True

df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1)

结果显示了一个真假结果列表,但我需要知道每个结果的数量。

【问题讨论】:

    标签: python pandas dataframe two-columns


    【解决方案1】:

    您可以通过value_counts查看

    df['a'].gt(df['b']).value_counts()
    

    【讨论】:

      【解决方案2】:

      你需要:

      (df['a'] > df['b']).sum()
      

      考虑以下示例:

      df = pd.DataFrame({
          'a':[10,20,30,40],
          'b':[1,200,300,4]
      })
      

      输出:

          a   b
      0   10  1
      1   20  200
      2   30  300
      3   40  4
      

      然后

       (df['a'] > df['b']).sum()
      

      输出

      2
      

      【讨论】:

      • 我试过这个,它适用于较大的数字,当我尝试查看较小的数字时,它给我带来了不正确的数量:(df['a'] > df['b']) .sum() 输出:7980 (df['b'] > df['a']).sum() 输出:73 但总行数为11975,字段不为空。
      • 您是否有可能有 3922 行 a 和 b 具有相同的数字?
      【解决方案3】:

      你做对了,只需添加 value_counts() 这样:

      df_filtered.apply(lambda y: result(y['a'],y['b']), axis = 1).value_counts()
      

      更好的是,如果您的函数 result 很简单,您可以编写:

      df.apply(lambda x: x['a']>x['b'], axis=1).value_counts()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 2020-03-08
        相关资源
        最近更新 更多