我有开始日期和结束日期的数据框(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的索引。
我正在尝试使用df1建立基于df2的统计信息表。 首先,我创建了一个空数据框以添加值。例如,
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的每一行并进行统计(最小值,最大值和均值)并将其放入输出表中以进行进一步的计算。到目前为止,上面的代码无法正常工作。帮助将不胜感激。
所需的输出
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