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参数指定自定义的填充值。这个函数在对多层索引的数据进行分析和操作时非常实用,可以提高数据的处理效率和易用性。
