在我的python代码中,使用pandas我必须重采样datetimedata序列并计算列值之间的差值(值之间差值的总和),我编写了这段代码:
import pandas as pd
import datetime
from .models import Results, VarsResults
start_date = datetime.date(2021, 6, 21)
end_date = datetime.date(2021, 6, 24)
def calc_q(start_d, end_d):
start_d = start_date
end_d = end_date
var_results = VarsResults.objects.filter(
id_res__read_date__range=(start_d, end_d)
).select_related(
"id_res"
).values(
"id_res__read_date",
"id_res__unit_id",
"id_res__device_id",
"id_res__proj_code",
"var_val",
)
df = pd.DataFrame(list(var_results))
df['id_res__read_date'] = pd.to_datetime(df['id_res__read_date'])
df = df.set_index('id_res__read_date')
df_15 = df.resample('15min').sum()
return df_15但是我得到了值本身的总和。
示例
... | 5
... | 3
... | 1我得到的是值之间的差值之和,而不是值之和:
在这种情况下为4 (5-3 =2+ 3-1 = 2,2+2)
pandas中有没有一种方法可以使用重采样来管理这种聚类?
非常感谢你,曼纽尔
发布于 2021-06-24 23:35:29
所有差异的总和等于第一个元素和最后一个元素之间的差异:如果您计算出它,所有其他元素都会被抵消。例如,在你的数据中,3抵消了:
(5-3) + (3-1)
= 5 - 3 + 3 - 1 # - 3 and + 3 cancel out
= 5 - 1我不知道Pandas是如何工作的,但你可以简单地做等同于first_value - last_value的工作。
https://stackoverflow.com/questions/68117639
复制相似问题