【问题标题】:Average of median of a column in a list of dataframes数据框列表中列的平均值
【发布时间】:2018-01-03 20:00:39
【问题描述】:
我正在寻找获取数据框列表中列的平均值的最佳方法(相同的列名)。
假设我有一个数据框列表list_df。我可以编写以下for 循环来获得所需的输出。我更感兴趣的是看看我们是否可以消除for 循环
med_arr = []
list_df = [df1, df2, df3]
for df in list_df:
med_arr.append(np.median(df['col_name']))
np.mean(med_arr)
【问题讨论】:
标签:
python-2.7
python-3.x
pandas
numpy
dataframe
【解决方案1】:
考虑样本数据
np.random.seed([3,1415])
df1 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
df2 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
df3 = pd.DataFrame(dict(col_name=np.random.randint(10, size=10)))
list_df = [df1, df2, df3]
选项 1
pandas
pd.concat([d['col_name'] for d in list_df], axis=1).median().mean()
3.8333333333333335
选项 2
numpy
np.median([d['col_name'].values for d in list_df], 1).mean()
3.8333333333333335
【解决方案2】:
这可以作为一个列表理解来完成:
list_df = [ df1, df2, df3 ]
med_arr = [ np.median( df['col_name'] ) for df in list_df ]
np.mean(med_arr)