当对某个 D a t a F r a m e DataFrame DataFrame 进行
pd.pivot_table
操作时,输出的透视表的列名会根据参数 c o l u m n s columns columns 所指定的列内含有的类别进行细分,最终生成到 E x c e l Excel Excel 时,列名也会占据多行,虽然提高了肉眼的可读性,但再次用程序加载得到的表并不方便处理Last updated: \space 2024/05/31
创建一个DateFrame
df = pd.DataFrame(
data={'User': ['Jaye', 'Ben', 'Ben', 'Jaye', 'Leo'],
'Class one?': ['Y', 'N', 'Y', 'Y', 'N'],
'Value': [5, 7.0, 10, 2, 8.8], })
>> User Class one? Value
0 Jaye Y 5.0
1 Ben N 7.0
2 Ben Y 10.0
3 Jaye Y 2.0
4 Leo N 8.8
创建数据透视表
df_pivot = pd.pivot_table(df, index='User', columns='Class one?', aggfunc='sum')
df_pivot.to_excel('testing.xlsx')
仔细观察 M u l t i I n d e x MultiIndex MultiIndex
p i v o t _ t a b l e pivot\_table pivot_table 的 c o l u m n s columns columns 是 M u l t i I n d e x MultiIndex MultiIndex
遍历输出后发现它由多个
t
u
p
l
e
tuple
tuple 组成,每一个
t
u
p
l
e
tuple
tuple 都代表了最细粒度的类别
输出到 E x c e l Excel Excel并重新读取
通过参数index_col
(对应
i
n
d
e
x
index
index) 和 header
(对于
c
o
l
u
m
n
s
columns
columns), 就可以读取前文已经输出到
E
x
c
e
l
Excel
Excel 的数据透视表
pd.read_excel('testing.xlsx', index_col=0, header=[0, 1])
index_col=0
表示将第一列设为 i n d e x index indexheader=[0, 1]
表示将第1~2行作为 c o l u m n s columns columns