Python 熊猫-计算与最早值相关的每日差异

Python 熊猫-计算与最早值相关的每日差异,python,pandas,resampling,Python,Pandas,Resampling,这可能相当容易,但出于某种原因,我发现完成它相当困难。任何提示都将不胜感激。我有一些时间序列数据,包括每天5分钟的间隔,阿拉巴马州: 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 20

这可能相当容易,但出于某种原因,我发现完成它相当困难。任何提示都将不胜感激。我有一些时间序列数据,包括每天5分钟的间隔,阿拉巴马州:

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)相关的差值,即以以下数据帧结束:

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]

您需要使用和创建的减法
系列


@jezrael我认为输出是正确的,上面的表达式只需要分配给
df。值
,然后
print(df)
产生与问题中给出的预期输出相同的输出。有一个问题,你不能用第一个值减去所有
系列
,而是用多天的第一个值,所以需要
transform
你是对的。我使用
pandas.read_clipboard()
来读取导致
pandas
的数据,使用datetime字符串的日期部分作为
str
索引,因此结果是“意外”正确的。我想如果@Myggen-指定他的专栏的类型会很好。谢谢!我稍微调整了您的建议:df.Values.groupby(pd.TimeGrouper(“D”)).transform(“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