pandas.DataFrame.stack()
是Pandas库中的一个方法,它可以将DataFrame中的列“旋转”为行,将多列变成一列。具体来说,stack()
方法能够将DataFrame从“宽格式”(wide format)转换为“长格式”(long format)。
下面详细讲解一下pandas.DataFrame.stack()
方法的作用和使用方法:
作用
pandas.DataFrame.stack()
方法的作用是将DataFrame中的多列转换成一列。具体而言,它将DataFrame的列索引“压缩”到行索引中,得到了一个Series对象。
使用方法
pandas.DataFrame.stack()
方法的语法如下:
DataFrame.stack(level=-1, dropna=True)
参数解释:
-
level:默认值为-1,表示所有层级都被压缩成一个Series,如果指定了level参数,则只有level中指定的层级会被压缩成Series
-
dropna:用于控制是否删除缺失值,如果将该参数设置为True,则会删除所有包含缺失值的行,如果将该参数设置为False,则会保留缺失值
下面通过两个实例来解释pandas.DataFrame.stack()
方法的使用方法:
实例1
import pandas as pd
df = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [1, 2, 3], 'C': [4, 5, 6]})
stacked = df.stack()
print(stacked)
输出结果为:
0 A a
B 1
C 4
1 A b
B 2
C 5
2 A c
B 3
C 6
dtype: object
在这个例子中,我们首先创建了一个DataFrame对象,包含了3个列A、B、C。然后调用stack()
方法,将df转换成了一个Series对象。可以看到,Series的索引有两个级别(MultiIndex)。第一个级别是原来的行索引,第二个级别是原来的列索引。
实例2
import pandas as pd
df = pd.read_csv('data.csv')
stacked = df.set_index(['date', 'location']).stack()
print(stacked)
在这个例子中,我们首先从一个CSV文件中读取了数据,并将“date”和“location”两列作为索引。然后使用stack()
方法,将df转换成了一个Series对象。可以看到,Series的索引有三个级别(MultiIndex)。第一个级别是原来的“date”列,第二个级别是原来的“location”列,第三个级别是原来的列索引。