Pandas是否有Python方式将新的分层列添加到平面列Dataframe

问题描述 投票:0回答:1

在Pandas中,操作分层列索引的工作比实际需要的要难,所以我想我一定会丢失一些东西。

例如。

pd.DataFrame(dict(A=1, B=2, C=3), index=pd.Index(['key1', 'key2'], name='pk'))

       A  B  C
 pk           
 key1  1  2  3
 key2  1  2  3

我想添加一个新列,但在新的层次结构下。

df['levelone', 'levelone - d'] = 4

向平列索引添加元组键('levelone','levelone-d),但不追加新的分层层次结构。我无法使用df['levelone']访问此列。

[比使用像hacky这样的东西有更好的方法吗?

multiindex = pd.MultiIndex.from_tuples(
[(col_name, '') if isinstance(col_name, str) else col_name for col_name in df.columns]
)
df.columns = multiindex

这将产生我想要的输出

       A  B  C     levelone
               levelone - d
 pk                        
 key1  1  2  3            4
 key2  1  2  3            4

但是感觉不好。为什么要提高和降低层次结构如此痛苦。我想念什么?

python pandas multi-index
1个回答
1
投票

让我们尝试

df.columns=pd.MultiIndex.from_product([df.columns,['']])
df.loc[:,('levelone', 'levelone - d')]=4
df
      A  B  C     levelone
              levelone - d
pk                        
key1  1  2  3            4
key2  1  2  3            4
© www.soinside.com 2019 - 2024. All rights reserved.