【问题标题】:pandas or numpy - how to count true/false array returnedpandas 或 numpy - 如何计算返回的真/假数组
【发布时间】:2019-02-21 07:12:38
【问题描述】:

我有一个名为 result 的数据框:

find_a  id     find_b  id
yes     0001   yes     0001
no      0002   yes     0002
no      0003   no      0003
yes     0004   no      0004
yes     0005   yes     0005

我有以下几点:

result.find_a.values==find_b.values

返回 True/False 数组: array([ True, False, True, False, True])

如何在此基础上构建并获得True 的计数?如果我能得到计数,我以后可以得到列之间匹配记录的百分比,即。 find_afind_b 匹配的概率为 40%。

另外,我不确定我是在冒险走 numpy 还是 pandas 路线……

提前感谢您的帮助。

【问题讨论】:

  • np.count_nonzero。由于True/False 被视为1/0,sum 也可以工作。
  • 嘿,我注意到你不接受下面的答案,以及this answer。如果他们有什么问题,您能告诉我,以便我解决吗?
  • @coldspeed Ummmm 不确定这是怎么发生的,可能是用户错误。一切都很好,谢谢。

标签: python python-3.x pandas numpy


【解决方案1】:

除非您要处理大量数据,否则使用 NumPy 还是 pandas 并不重要。由于您使用的是 pandas,因此我建议您只使用基础知识,除非您知道自己需要其他方式。

要回答您的原始问题,您可以使用mean 获得True 值的百分比:

(df['find_a'] == df['find_b']).mean()
# 0.6

在哪里,

df['find_a'] == df['find_b']

0     True
1    False
2     True
3    False
4     True
dtype: bool

【讨论】:

    【解决方案2】:
    len(result[result.find_a == result.find_b])
    np.mean(result.find_a == result.find_b)
    

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 2021-11-05
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2014-12-15
      相关资源
      最近更新 更多