我经常需要按个人群体和几个变量制作描述性统计表格。我几乎达到了所需的结果,如下所示(列=个人组,行=按感兴趣的变量的统计数据):
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 25% 2.00 1.00 1.00 2.00
50% 4.00 3.00 2.00 4.00
75% 6.00 5.00 4.00 6.00
count 250.00 1,816.00 1,442.00 374.00
max 17.00 21.00 21.00 16.00
mean 4.58 3.37 3.14 4.23
min 0.00 0.00 0.00 0.00
std 3.14 3.12 3.13 2.93
dist_c 25% 0.45 0.53 0.54 0.50
50% 0.89 1.01 1.04 0.94
75% 1.48 1.95 2.15 1.46
count 250.00 1,836.00 1,462.00 374.00
max 6.80 19.68 19.68 7.75
mean 1.17 1.78 1.92 1.21
min 0.00 0.00 0.00 0.00
std 1.13 2.25 2.43 1.16
从此我希望能够按照我想要的顺序提取我想要的统计数据,例如只显示平均值,标准和中位数。我接近以下几行:
df_groups_desc.loc[(slice(None), ['mean', 'std', '50%']),:]
...但关闭只是因为我没有按照所需的顺序显示统计数据:
group_name ELF-TA TOTAL TOTAL not TA TOTAL-TA
stat
nb_c_3km 50% 4.00 3.00 2.00 4.00
mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
dist_c 50% 0.89 1.01 1.04 0.94
mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
关于合理解决方案的任何提示?
答案 0 :(得分:1)
reindex
可以按顺序选择行:
new_index, indexer = df.index.reindex(['mean', 'std', '50%'], level=1)
df = df.reindex(index=new_index)
print(df)
产量
ELF-TA TOTAL TOTAL not TA TOTAL-TA
dist_c mean 1.17 1.78 1.92 1.21
std 1.13 2.25 2.43 1.16
50% 0.89 1.01 1.04 0.94
nb_c_3km mean 4.58 3.37 3.14 4.23
std 3.14 3.12 3.13 2.93
50% 4.00 3.00 2.00 4.00