Рассмотрим прямую векторизацию, поскольку вы можете выполнять арифметические операции над аналогичными структурированными фреймами данных:
(df1 + df2.reindex(labels=df1.index.values, fill_value=15)) / 2
# June 2016 July 2016
# Flavor
# Vanilla 13.0 21.0
# Chocolate 8.5 7.5
# Strawberry 13.0 14.5
А для многих фреймов данных в списке рассмотрим reduce
:
from functools import reduce
df_list = [df1, df2]
new_df_list = [d.reindex(labels=df1.index.values, fill_value=15) for d in df_list]
reduce(lambda x,y: x + y, new_df_list) / len(new_df_list)
# June 2016 July 2016
# Flavor
# Vanilla 13.0 21.0
# Chocolate 8.5 7.5
# Strawberry 13.0 14.5
Данные
import pandas as pd
from io import StringIO
txt = '''
Flavor "June 2016" "July 2016"
Vanilla 17.0 23.0
Chocolate 7.0 12.0
Strawberry 11.0 14.0'''
df1 = pd.read_table(StringIO(txt), sep="\s+", index_col=0)
txt = '''
Flavor "June 2016" "July 2016"
Vanilla 9.0 19.0
Chocolate 10.0 3.0'''
df2 = pd.read_table(StringIO(txt), sep="\s+", index_col=0)