Pandas - 计算相对于最早值的每日差异

Pandas - Calculating daily differences relative to earliest value

这可能很简单,但出于某种原因,我发现它很难完成。任何提示将非常感谢。我有一些时间序列数据,每天包含 5 分钟的时间间隔,ala:

Date                   Values
2012-12-05 09:30:00    5
2012-12-05 09:35:00    7
2012-12-05 09:40:00    3
2012-12-05 09:45:00    2
2012-12-05 09:50:00    15
2012-12-06 09:30:00    4
2012-12-06 09:35:00    3
2012-12-06 09:40:00    8
2012-12-06 09:45:00    1

我想计算相对于当天第一个值的差异(在这种情况下总是 9:30 值),即。最终得到这个 DataFrame:

Date                   Values
2012-12-05 09:30:00    0
2012-12-05 09:35:00    2
2012-12-05 09:40:00    -2
2012-12-05 09:45:00    -3
2012-12-05 09:50:00    10
2012-12-06 09:30:00    0
2012-12-06 09:35:00    -1
2012-12-06 09:40:00    4
2012-12-06 09:45:00    -3

您可以使用广播:

df.Values - df.Values.iloc[0]

您需要减去 Series 创建的 transform with groupby by Series.dt.date and first:

print (df.Values.groupby(df.Date.dt.day).transform('first'))
0    5
1    5
2    5
3    5
4    5
5    4
6    4
7    4
8    4
Name: Values, dtype: int64

df.Values = df.Values - df.Values.groupby(df.Date.dt.day).transform('first')

print (df)
                 Date  Values
0 2012-12-05 09:30:00       0
1 2012-12-05 09:35:00       2
2 2012-12-05 09:40:00      -2
3 2012-12-05 09:45:00      -3
4 2012-12-05 09:50:00      10
5 2012-12-06 09:30:00       0
6 2012-12-06 09:35:00      -1
7 2012-12-06 09:40:00       4
8 2012-12-06 09:45:00      -3