关键词

详解pandas.DataFrame.unstack()(将序列展开为数据框)函数使用方法

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对象,可以提高数据操作效率。

本文链接:http://task.lmcjl.com/news/17680.html

展开阅读全文