我有一个数据帧,其中包含17000多行的日期索引。 对于每一行,我都将功耗、温度和日期作为数据帧的索引。还有其他4列,其中有各种格式的日期。你知道吗
对于每行,如果日期>;=08/01/2019,我将执行以下操作:
消费(日期)=消费(日期)-消费(日期-1周)
温度(日期)=温度(日期)-温度(日期-1周)
但是速度非常慢(比如4分钟…)
结果是好的,但我不能设法加快进程。你知道吗
在我开始使用python时,我想知道这种方法是否正确? 也许事实上,有4列我不在这里使用这个计算减慢过程?你知道吗
下面是代码的一部分,使用我上面描述的数据帧需要花费大量时间。你知道吗
for index, row in df.iterrows():
if index >= datetime(year,1,8,0,0):
date_start_j_wb = index - timedelta(days=7)
conso_j = df[df.index == index]["conso"].values
conso_j_wb = df[df.index == date_start_j_wb]["conso"].values
temp_j = df[df.index == index]["temp"].values
temp_j_wb = df[df.index == date_start_j_wb]["temp"].values
s_dconso = conso_j[0] - conso_j_wb[0]
s_dtemp = temp_j[0] - temp_j_wb[0]
下面是看起来像数据帧的内容,因为可能是因为日期列的数量,所以代码非常慢:
df["start_date"] = start_date
df["start_hour"]= start_hour
df["end_hour"] = end_hour
df["start_date_hour"] = start_date_hour
df["start_date_hour_str"] = start_date_hour_str
df["end_date_hour_str"] = end_date_hour_str
df["end_date_hour"] = end_date_hour
df["end_hour"] = end_hour
df["conso"] = conso
df["temp"] = temp
你能给我一些建议来加速这个代码吗。 有了这么多的数据,我想不会超过1分钟。。。你知道吗
先谢谢你
嗯,好吧,我明白了,这样做我根本没有利用向量计算…但我看不到其他的方式。你知道吗
我的数据框是这样的(一年30分钟的步长):
如前所述,对于每一行,我检查索引是否优于或等于2019-01-08,如果是这样,我查看一周前的“conso”和“temp”,然后计算日期“D”的“conso”减去日期“conso”a和日期(D-1week)之间的差值 这里的输出是2019年1月8日起每行的消耗变化和温度变化。你知道吗
然后我将消耗量与温度相乘,温度与温度相乘。你知道吗
然后我将结果“prodtemp”和“prodtemp\u conso”存储在两个列表中。我们的目标实际上是做一个基本的线性回归。你知道吗
然后我用prodtemp除以prodtemp,再加上每半个小时。你知道吗
但是我上面提到的那部分代码,是减慢一切的那部分。。你知道吗
我找到了另一个解决方案,工作更快,但一点也不优雅。你知道吗
我创建了5个列表:一个在第一个小时更改之前,一个在小时更改的当天,一个在小时更改的第一天之后和第二天之前,另一个在小时更改的第二天和最后一个之后。。。你知道吗
然后我为第一个小时的列表添加了两个值,为第二个小时的列表删除了两个值更改为结果我有48个元素。你知道吗
我连接了5个列表,并创建了两个列表:一个从开始到结束移动48*7。操作简单。你知道吗
从时间的变化来看是错误的,但这两个步骤对我来说并不重要。你知道吗
但它不是很干净。。。。你有什么建议吗?你知道吗
相关问题 更多 >
编程相关推荐