数据框列表中列的中值的平均值
问题描述:
我正在寻找获取数据框列表(相同列名称)列中位数平均值的最佳方法。数据框列表中列的中值的平均值
比方说,我有一个数据框的列表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)
答
这可以做一个列表理解:
list_df = [ df1, df2, df3 ]
med_arr = [ np.median(df['col_name']) for df in list_df ]
np.mean(med_arr)
答
考虑样本数据
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]
选项1pandas
pd.concat([d['col_name'] for d in list_df], axis=1).median().mean()
3.8333333333333335
选项2numpy
np.median([d['col_name'].values for d in list_df], 1).mean()
3.8333333333333335