pandas.DataFrame.unstack()是一种数据结构转换函数,可以将具有多层索引的pandas DataFrame对象转换为单层DataFrame对象。它的作用是将DataFrame中的某些列作为列的索引,同时将行索引的某些级别旋转为新的列。
另外,unstack()函数还支持将多个索引级别转换为列,以及在转换时选择要使用的元素。
unstack()函数使用方法
语法:
DataFrame.unstack(level=-1, fill_value=None)
参数说明:
-
level: 默认为最后一级别,即 -1 级别。
-
fill_value:用于替换NaN值的固定值。
实例说明
首先创建一个有多个索引级别的DataFrame:
import pandas as pd
data = pd.DataFrame({'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],
'B': ['one', 'one', 'two', 'two', 'one', 'one'],
'C': ['x', 'y', 'x', 'y', 'x', 'y'],
'D': [1, 3, 2, 5, 4, 1]})
df = data.set_index(['A', 'B', 'C'])
print(df)
输出结果:
D
A B C
foo one x 1
y 3
two x 2
bar two y 5
one x 4
y 1
实例1
使用unstack()将DataFrame中的C级别索引转换为列,并创建一个新的DataFrame:
result = df.unstack('C')
print(result)
输出结果:
D
C x y
A B
bar one 4 1
two NaN 5
foo one 1 3
two 2 NaN
此时,C级别的索引变成了新的DataFrame的列名。
实例2
将DataFrame中的A和C级别索引都转换为列,创建一个新的DataFrame:
result = df.unstack(['A', 'C'])
print(result)
输出结果:
D
A bar foo
C x y x y
B
one 4.0 1.0 1 3
two NaN 5.0 2 NaN
在此实例中,使用了两个级别的索引的名称来指定在转换时使用的索引级别。结果中的列名由指定的索引级别组成。如果某个索引级别不包含全部的唯一值,则结果DataFrame中的列将包含NaN值。
总之,pandas.DataFrame.unstack()是一种非常实用的数据结构转换函数,可以将多层索引的DataFrame对象转换为更具可读性和操作性的单层DataFrame对象,可以提高数据操作效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解pandas.DataFrame.unstack()(将序列展开为数据框)函数使用方法 - Python技术站