如何将多级列DataFrame的单行转换为常规DataFrame?
问题解答:多级列DataFrame的转换与直接构造
一、将现有多级列DataFrame转换为目标格式
最简洁且符合Python风格的方法是利用Series.unstack(),一行代码即可完成:
result = df.iloc[0].unstack(level=1)
原理说明:
df.iloc[0]取出原DataFrame中唯一的一行,得到一个带有多级索引的Series,索引结构为(水果名称, Data类型);unstack(level=1)将Series的第二层索引(Data1/Data2/Data3)转换为列,第一层索引(Apple/Banana/Orange)转换为行索引,直接得到目标结构的DataFrame。
二、直接构造带多级列的DataFrame
无需先创建空DataFrame再赋值,直接在构造时传入对应结构的数据即可:
import pandas as pd # 直接构造多级列DataFrame df = pd.DataFrame( data=[[1, 2, 3, 4, 5, 6, 7, 8, 9]], # 一行9个元素,对应3个水果×3个Data列 columns=pd.MultiIndex.from_product([['Apple','Banana','Orange'],['Data1','Data2','Data3']]), index=[1] )
数据结构说明:
因为多级列总共有3×3=9个列,所以传入的data需要是二维列表(即使只有一行),内部列表的元素顺序要与MultiIndex生成的列顺序完全对应(先Apple的三个Data列,再Banana,最后Orange)。
内容的提问来源于stack exchange,提问作者agftrading
相关产品推荐
相关产品推荐

