向单级熊猫数据框添加多级列
Posted
技术标签:
【中文标题】向单级熊猫数据框添加多级列【英文标题】:Adding a multi-level column to a single-level pandas dataframe 【发布时间】:2021-06-27 00:15:54 【问题描述】:我有一个单级熊猫数据框:
df = pd.DataFrame("x":[0,0,0],"y":[0,0,0])
看起来像这样:
x y
0 0 0
1 0 0
2 0 0
现在我想向这个数据框添加一个多级列“z”(有两个子列“z1 和“z2”),所以它看起来像这样:
x y z
z1 z2
0 0 0 1 2
1 0 0 1 2
2 0 0 1 2
【问题讨论】:
如果您只添加列df["z1"] = 1; df["z2"] = 2
,您的生活可能会更轻松
@anon01 实际上,我的数据框中需要多个多级列,每个列都有多个子列,并且我经常需要操作给定父列的所有子列。如果我不使用多级列,那么每次我需要做一个列表理解来选择所有以给定字符串开头的列(例如所有以“z”开头的列,即“z1”和“z2 "),所以会有点乱。因此,如果有一种简单的方法可以将多级列添加到单级数据框,我猜这会让我的工作更轻松。
【参考方案1】:
首先我们将现有列设为多索引:
df.columns = pd.MultiIndex.from_arrays([df.columns,['']*len(df.columns)])
然后添加由元组索引的新元组
df[('z','z1')] = [1,1,1]
df[('z','z2')] = [2,2,2]
df
得到
x y z
z1 z2
0 0 0 1 2
1 0 0 1 2
2 0 0 1 2
【讨论】:
以上是关于向单级熊猫数据框添加多级列的主要内容,如果未能解决你的问题,请参考以下文章