Я работаю с CSV-файлом почасовых данных о температуре для указанного c местоположения в течение года. Оттуда я создал кадр данных в pandas со следующими списками: DOY (24 для каждого дня), Время (в минутах; 0, 60, 120 и т. Д. c.) И температура.
Эти данные служат входными данными для модели, которую я имею в Python (ноутбуки Jupyter, работающей на iOS), которая предсказывает температуры тела животных при решении для ряда биофизических уравнений теплового потока. Для этой модели у меня есть функция, которая имеет аргументы минимальной и максимальной температуры для каждого дня. В файле csv каждый день содержит 24 строки данных, поскольку они дают почасовые значения температуры. Мне нужно иметь возможность перебирать этот CSV-файл и выбирать минимальное и максимальное значение температуры за день до текущего дня [i-1], текущего дня [i] и следующего дня [i + 1] в другой функции что у меня уже есть. У кого-нибудь есть предложения по настройке этих функций? Я все еще довольно плохо знаком с Python (<1 года опыта), поэтому любая помощь будет очень признательна! :) </p>
Изменить, чтобы уточнить:
import math
import itertools
%pylab inline
import matplotlib as plt
import pandas as pd
import numpy as np
%cd "/Users/lauren/Desktop"
Ta_input = pd.DataFrame(pd.read_csv("28Jan_Mesa_Ta.csv"))
Ta_input.columns = ['', 'doy', 'time', 'Ta']
Ta_input.to_numpy()
doy =list(Ta_input['doy'])
time=list(Ta_input['time'])
Ta=list(Ta_input['Ta'])
micro_df = pd.DataFrame(list(zip(doy,time, Ta)),
columns=['doy','time', 'Ta'])
print(micro_df)
##### Below is the readout showing what the df looks like ###
Populating the interactive namespace from numpy and matplotlib
/Users/lauren/Desktop
doy time Ta
0 1 0 4.434094
1 1 60 4.383863
2 1 120 4.115001
3 1 180 3.831146
4 1 240 3.537708
... ... ... ...
8755 365 1140 6.478684
8756 365 1200 5.744720
8757 365 1260 5.212801
8758 365 1320 4.568695
8759 365 1380 4.398663
[8760 rows x 3 columns]
/usr/local/Caskroom/miniconda/base/lib/python3.7/site-packages/IPython/core/magics/pylab.py:160: UserWarning: pylab import has clobbered these variables: ['time', 'polyint', 'plt', 'insert']
`%matplotlib` prevents importing * from pylab and numpy
"\n`%matplotlib` prevents importing * from pylab and numpy"
У меня есть эти функции
def anytime_temp(t,max_t_yesterday,min_t_today,max_t_today,min_t_tomorrow):
#t = time
#i = today
#i-1 = yesterday
#i+1 = tomorrow
#Tn = daily min
#Tx = daily max
if 0.<=t<=5.:
return max_t_yesterday*Gamma_t(t) + min_t_today*(1-Gamma_t(t))
elif 5.<t<=14.:
return max_t_today*Gamma_t(t)+ min_t_today*(1-Gamma_t(t))
else:
return max_t_today*Gamma_t(t)+ min_t_tomorrow*(1-Gamma_t(t))
# Rabs = amount of radiation absorbed by an organism
def Rabs(s,alpha_s,h,lat,J,time,long,d,tau,alt,rg,alpha_l,max_t_yesterday,min_t_today,max_t_today,min_t_tomorrow,eg,Tave,amp,z,D):
if math.cos(zenith(latitude,julian,time,longitude)) > 0.:
return s*alpha_s*(Fh(h,lat,J,time,long,d)*(hS(J,lat,time,long,tau,alt))+0.5*Sd(J,lat,time,long,tau,alt)+0.5*Sr(rg,J,lat,time,long,tau,alt)) + 0.5*alpha_l*(Sla(anytime_temp(time,max_t_yesterday,min_t_today,max_t_today,min_t_tomorrow)) + Slg(eg,Tzt(Tave,amp,z,D,time)))
else:
return 0.5*alpha_l*(Sla(anytime_temp(time,max_t_yesterday,min_t_today,max_t_today,min_t_tomorrow)) + Slg(eg,Tzt(Tave,amp,z,D,time)))
..., которые оба принимают максимальную температуру вчера, минимальную и максимальную температуру сегодня, и минимальная температура завтра как входы. Мой код настроен для работы со мной, просто устанавливая эти значения как отдельные числа (например, min_t_today = 25.). Но теперь, когда у меня есть список почасовых температур за весь год, я пытаюсь найти лучший способ либо изменить эти функции, либо определить новые функции, которые я мог бы вызывать в этих функциях, чтобы позволить мне вытащить минимум и максимум значения температуры для каждого конкретного c DOY (день года, который является еще одним списком в моей df).
Другими словами, мой CSV-файл имеет почасовую температуру для каждого DOY, поэтому 24 температуры в день. Мне нужно перебрать, чтобы вычислить и вызвать минимальную и максимальную температуры для данного дня в этих функциях. Любые советы будут полезны! Спасибо!
Кроме того, я очень новичок в переполнении стека. Я опубликовал этот же вопрос несколько месяцев go и не смог его решить (вероятно, потому, что я слишком долго следил за комментарием человека). Я прошу прощения, если был лучший способ привлечь внимание и обратную связь для более старого вопроса .. Еще раз спасибо!