向单级熊猫数据框添加多级列

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

【讨论】:

以上是关于向单级熊猫数据框添加多级列的主要内容,如果未能解决你的问题,请参考以下文章

如何在一项作业中向熊猫数据框添加多列?

向熊猫数据框添加一列

多级熊猫数据框中的总和列

如何在单级数据框中的值上加入多级数据框

熊猫:将新列添加到作为索引列副本的数据框

如何在带有熊猫的列数据框前面添加值[重复]