使用不同的键在熊猫中垂直堆叠多个数据框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用不同的键在熊猫中垂直堆叠多个数据框相关的知识,希望对你有一定的参考价值。

我在Pandas中有一个数据框,如下所示-

import pandas as pd
data = {'Category': ['cat2','cat1','cat2','cat1','cat2','cat1','cat2','cat1','cat1','cat1','cat2'],
        'values': [1,2,3,1,2,3,1,2,3,5,1]}
my_data = pd.DataFrame(data)

我获得每个类别值的最小值,最大值和平均值,并且我还重命名了列名,如下所示-

# Get the minimum value for each column
min_agg = my_data.groupby('Category').min().reset_index()
min_agg.columns = [str(col) + '_min' for col in min_agg.columns]

   category_min  values_min
0   cat1            1
1   cat2            1

# Get the minimum value for each column
max_agg = my_data.groupby('Category').max().reset_index()
max_agg.columns = [str(col) + '_max' for col in max_agg.columns]


   category_max  values_max
0   cat1            5
1   cat2            3

# Get average value for each column
avg_agg = my_data.groupby('Category').mean().reset_index()
avg_agg.columns = [str(col) + '_avg' for col in avg_agg.columns]


   category_avg  values_avg
0   cat1           2.666667
1   cat2           1.600000

现在,我想垂直堆叠这3个数据框,以得到具有6条记录的最终数据框,每个数据框各2条,如下所示-

category            values
cat1_min            1
cat2_min            1
cat1_max            5
cat2_max            3
cat1_avg           2.666667
cat2_avg           1.600000

输出的第一列显示在哪个类别上应用了什么聚合,第二列显示相应的值。

我该如何使用熊猫?

我尝试过

vertical_stack = pd.concat([min_agg, max_agg, avg_agg], axis=0 , keys=['Category_min','Category_max','Category_avg'])

但是它没有给我预期的输出。

此处显示的聚合仅在1列上,但是我有一个更大的数据集,并且我正在许多列上计算此聚合。

答案

您可以使用所需的汇总功能来按类别进行分类,然后堆叠结果:

r = df.pivot_table(columns='Category', values='values', aggfunc=['min', 'max', 'mean']) 
r.columns = r.columns.map('_'.join)  

r.T                                                                                                                                                  

             values
min_cat1   1.000000
min_cat2   1.000000
max_cat1   5.000000
max_cat2   3.000000
mean_cat1  2.666667
mean_cat2  1.600000

以上是关于使用不同的键在熊猫中垂直堆叠多个数据框的主要内容,如果未能解决你的问题,请参考以下文章

在循环中将字典附加到熊猫数据框

如何在python中为具有多个索引的数据框制作堆叠图?

将熊猫数据框转换为具有多个键的字典

如何合并熊猫数据框中的两列,堆叠在顶部

情节堆积条形图熊猫数据框

如何根据字典中的键值逐行向熊猫数据框添加值?