У меня есть фрейм данных (df1) дат начала и окончания, как это.
Start Date End Date
1875-01-01 1877-09-30
1881-07-01 1886-03-31
1888-01-01 1889-06-30
1890-10-01 1890-12-31
.
.
.
2016-10-01 2018-12-31
У меня есть другой набор данных (df2), который состоит из ежедневных временных рядов. Например,
Date Value
1875-01-01 7.21
1875-01-02 7.23
1875-01-03 7.22
1875-01-04 7.12
.
.
.
2018-12-31 3.12
Я установил даты в качестве индекса для df2.
Я пытаюсь создать таблицу статистики на основе df2, используя df1.
Сначала я создал пустой фрейм данных для добавления значений. Например,
outputtable = pd.DataFrame(columns = ('Max','Min','Ave'))
for i in df1.index:
try:
df3 = df2.loc[df1['Start Date'][i]:df1['End Date'][i]]
minimum = df3['Value'].min()
maximum = df3['Value'].max()
average = df3['Value'].mean()
outputtable[-1]= [minimum, maximum, average]
except:
pass
Я использовал try, потому что некоторые даты в df1 не в df2. В этом случае я хочу, чтобы код игнорировался и переходил к следующему набору дат.
Я хочу, чтобы код проходил через каждую строку df1 и выполнял статистику (min, max и mean) и помещал их в выходную таблицу для дальнейших вычислений. Пока приведенный выше код не работает. Помощь будет высоко ценится.
Желаемый вывод
Start Date End Date Min Max Ave
1875-01-01 1877-09-30 7 8 7.2
1881-07-01 1886-03-31 1 4 2.2
1888-01-01 1889-06-30 2 6.5 3
1890-10-01 1890-12-31 3 5 4.2
.
.
.
2016-10-01 2018-12-31 1 2 1.7