【问题标题】:Check for max value of iterative sum in pandas检查熊猫中迭代和的最大值
【发布时间】:2022-01-20 09:44:17
【问题描述】:

我有一个带有一些数据的 pandas 数据框:

0   -0.000601
1    0.000001
2    0.000000
3    0.000007
4    0.000300
5   -0.000300
Name: measure, dtype: float64

我想对它们求和,一次一个,每次求和时检查总和,然后提取总和中达到的最高值。

所以第一个总和是元素0,值为-0.000601,发送是-0.000601 + 0.000001=-0.0006,这将高于第一个总和(换句话说,就是元素0) ,因此该值将是该点之前的最大值。

我想一个 for 循环可以完成这项工作,但我更愿意做一些像 measure.loc[0:4, 'measure'].max() 这样的 Pythonic,但这只是检查总和的最大值。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    我相信你需要一个累积和然后找到最大值。

    >>> df = pd.DataFrame({'a':[-0.000601, 0.000001, 0.000000, 0.000007, 0.000300, -0.000300]})
    >>> df
    
    out:
              a
    0 -0.000601
    1  0.000001
    2  0.000000
    3  0.000007
    4  0.000300
    5 -0.000300
    
    >>> df['b'] = df.cumsum()
    >>> df
    
    out:
              a         b
    0 -0.000601 -0.000601
    1  0.000001 -0.000600
    2  0.000000 -0.000600
    3  0.000007 -0.000593
    4  0.000300 -0.000293
    5 -0.000300 -0.000593
    
    >>> df[df['b'] == df['b'].max()]
    
    out:
            a         b
    4  0.0003 -0.000293
    

    【讨论】:

    • 这听起来很准确
    猜你喜欢
    • 2021-10-22
    • 2020-04-28
    • 2022-10-16
    • 2017-10-20
    • 2018-12-29
    • 2021-06-23
    • 2017-07-25
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多