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