如何在python [重复]中透视数据帧

问题描述 投票:1回答:2

这个问题在这里已有答案:

我有以下数据框:

week           Country         Year   Value   category  
1               Angola          2005    6       A  
1               Angola          2005    13      A  
1               Angola          2005    10      B  
1               Angola          2005    11      C  
1               Angola          2005    5       D  
1               Angola          2006    3       A  
1               Angola          2006    2       B  
1               Angola          2006    7       C  
1               Angola          2006    3       D  
1               Angola          2006    6       E  
2               Angola          2006    3       A  
2               Angola          2006    2       B  
2               Angola          2006    7       C  
2               Angola          2006    3       D  

我希望上面的数据框在每年按周分组,并在python中准备一个透视图,给出下面的数据框。对于不同的国家,相同的数据会继续,并且可能会添加不同的类别,如果任何国家/地区都有新类别,则应将该类别添加到数据框中,并在该数据框中包含相应的值。

week      Country         year    category_A   Category_B     category_C category_D    Category_E
1           Angola         2005       19            10              11           5          0
1           Angola         2006       3             2               7           3           6
2           Angola         2006       3             2               7           3           0
python python-3.x pandas dataframe
2个回答
3
投票

这是一种方式。请注意,如果您需要索引作为列,则可以使用reset_index。您可能还希望将类别列重命名为单独的步骤。

res = df.pivot_table(index=['week', 'Country', 'Year'], columns=['category'],
                     values='Value', aggfunc=np.sum, fill_value=0)

print(res)

category            A   B   C  D  E
week Country Year                  
1    Angola  2005  19  10  11  5  0
             2006   3   2   7  3  6
2    Angola  2006   3   2   7  3  0

2
投票

在这种情况下,您还可以使用groupby而不是pivot

(df.groupby(['week', 'Year', 'Country', 'category'])
 .sum()
 .unstack(fill_value=0)
 .add_prefix('category_'))

哪个给你:

                  category_Value                                            
category              category_A category_B category_C category_D category_E
week Year Country                                                           
1    2005 Angola              19         10         11          5          0
     2006 Angola               3          2          7          3          6
2    2006 Angola               3          2          7          3          0
© www.soinside.com 2019 - 2024. All rights reserved.