首页 > 解决方案 > 如何获得同一天的两个条目之间的差异?

问题描述

我有以下熊猫数据框:

import pandas as pd
df = pd.DataFrame({"datetime": ["30.12.1999 00:59:00", "30.12.1999 23:59:00", "31.12.1999 00:59:00", "31.12.1999 23:59:00"], "b": [4, 15, 26,7]})
df["datetime"] = pd.to_datetime(df.datetime)
df["date"]=df.datetime.dt.date

看起来像:

             datetime   b        date
0 1999-12-30 00:59:00   4  1999-12-30
1 1999-12-30 23:59:00  15  1999-12-30
2 1999-12-31 00:59:00  26  1999-12-31
3 1999-12-31 23:59:00   7  1999-12-31

数据框实际上有更多行,但以下原则仍然有效:一天只有两行。

我想得到两个值之间的差异b。所以在上面的例子中,我希望得到一个如下所示的数据框:

        date  b_delta
0 1999-12-30       11
1 1999-12-31      -19

我怎样才能做到这一点?

标签: pythonpandas

解决方案


最简单的方法是:

df.set_index('date').groupby('date')['b'].diff().reset_index(name='b_delta').dropna()

输出:

date           b_delta
1999-12-30     11.0
1999-12-31    -19.0

推荐阅读