首页 > 解决方案 > 如何计算两个连续行的条目并在新数据框中仅保留第二行?

问题描述

我有这样一个数据框:

DATE |  VALUE
23/07/21 01 | 20
23/07/21 02 | 10
23/07/21 03 | 15
23/07/21 04 | 200

我想要得到的是新的数据框,它总结了 column 的两个连续行的VALUE条目并保留 column 的第二行的条目DATE

它应该看起来像这样:

DATE |  VALUE
23/07/21 02 |   30
23/07/21 04 |   215

我怎样才能做到这一点?

标签: pythonpandas

解决方案


您可以尝试rolling

>>> df.set_index("DATE").rolling(2).sum().iloc[1::2].reset_index()

            DATE  VALUE
0  2021-07-21 02   30.0
1  2021-07-21 04  115.0

使用更大的 DataFrame,这变得相当快:

df = pd.concat([df]*1000)

>>> %timeit df.set_index("DATE").rolling(2).sum().iloc[1::2].reset_index()
1.33 ms ± 15.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

>>> %timeit df.groupby(np.arange(len(df))//2).agg({'DATE':'last', 'VALUE':'sum'})
2.15 ms ± 108 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

推荐阅读