欢迎访问宙启技术站
智能推送

unstack()函数:将多层索引的数据转换为表格形式

发布时间:2024-01-09 17:10:59

unstack()函数是pandas库中的一个方法,主要用于将多层索引的数据转换为表格形式。多层索引是指在DataFrame或Series的行或列上,有多个层次的索引标签。unstack()函数可以将其中的一层索引转换为表格的列,并重新排列数据。

unstack()函数的语法如下:

DataFrame.unstack(level=-1, fill_value=None)

参数说明:

- level:指定要转换的索引层次,默认为-1,表示转换最内层的索引。

- fill_value:指定未匹配值时的填充值,默认为None。

下面通过一个例子来说明unstack()函数的用法。

例子:

假设有一个DataFrame数据,表示某个国家的销售情况。数据包含三个层级的索引:国家、产品类别、年份,并且每个索引层级下都有对应的销售额。

import pandas as pd

data = {'sales': [100, 200, 300, 150, 250, 350, 120, 220, 320],
        'country': ['USA', 'USA', 'USA', 'China', 'China', 'China', 'India', 'India', 'India'],
        'category': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
        'year': [2018, 2018, 2018, 2019, 2019, 2019, 2020, 2020, 2020]}

df = pd.DataFrame(data)
df = df.set_index(['country', 'category', 'year'])

此时,df的内容为:

                      sales
country category year       
USA     A        2018    100
        B        2018    200
        C        2018    300
China   A        2019    150
        B        2019    250
        C        2019    350
India   A        2020    120
        B        2020    220
        C        2020    320

现在我们可以使用unstack()函数将最内层索引year转换为表格的列:

df_unstacked = df.unstack(level='year')

转换之后,df_unstacked的内容为:

                    sales              
year                 2018   2019   2020
country category                      
China   A            NaN  150.0    NaN
        B            NaN  250.0    NaN
        C            NaN  350.0    NaN
India   A            NaN    NaN  120.0
        B            NaN    NaN  220.0
        C            NaN    NaN  320.0
USA     A          100.0    NaN    NaN
        B          200.0    NaN    NaN
        C          300.0    NaN    NaN

可以看到,最内层索引year被转换为了表格的列,同时未匹配到的值被填充为NaN。

unstack()函数的使用非常灵活,根据具体需求可以指定不同的level来转换不同层级的索引,也可以通过fill_value参数指定自定义的填充值。这个函数在对多层索引的数据进行分析和操作时非常实用,可以提高数据的处理效率和易用性。