【问题标题】:Python dataframe - count occurrences in a specified range (not axis!)Python数据框 - 计算指定范围内的出现次数(不是轴!)
【发布时间】:2020-04-18 10:34:03
【问题描述】:

我有一个数据框(称为 df),其中有一个带有时间戳(第一列)和几个整数数据列的时间序列。

时间戳国家 1 国家 2

12:00:00 10.05 21.60

11:59:00 11.12 22.33

11:58:00 12.18 21.70

11:57:00 11.70 21.60

11:56:00 11.65 22.33

11:55:00 11.70 21.60

11:54:00 11.50 22.33

11:53:00 11.80 21.80

... ... ...

问题:我想计算特定范围(不是整个轴!)中出现最大值的次数。

例如在 Country 2 列中,我想计算第 1-8 行中最大值的出现次数。所以首先我找到最大值:df.iloc[0:7,1].max() -> 22.33

现在我想数一数,怎么做?

我正在寻找类似计数(范围,目标值)的东西

-> df.count(df.iloc[0:7,1)], df.iloc[0:7,1].max())

输出应该是一个整数。这里的最大值(即 22.33)在定义的范围内出现了 3 次,所以我希望是 3。

感谢您的帮助

【问题讨论】:

    标签: python pandas dataframe count


    【解决方案1】:

    按最大值比较过滤后系列的每个值,并按sum 计数Trues 值:

    s = df.iloc[0:7,1]
    
    count = s.eq(s.max()).sum()
    #alternative
    count = (s == s.max()).sum()
    
    print (count)
    3
    

    编辑:使用Series.between

    s = df.iloc[0:7,1]
    
    thr = 0.01
    #print (s.max() - thr)
    #print (s.max() + thr)
    
    count = s.between(s.max() - thr, s.max() + thr).sum()
    print (count)
    3
    

    【讨论】:

    • 我确实工作了,又做了一次调整:我如何计算最大值 +/- 0.01 的出现次数,例如在 22.32 和 22.34 之间的数字范围内出现了多少次
    猜你喜欢
    • 1970-01-01
    • 2020-11-09
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2017-05-21
    • 2018-09-09
    相关资源
    最近更新 更多