web-dev-qa-db-ja.com

pandasデータフレームに列レベルを単純に追加する方法

次のようなデータフレームがあるとします。

df = pd.DataFrame(index=list('abcde'), data={'A': range(5), 'B': range(5)})
 df
Out[92]: 
   A  B
a  0  0
b  1  1
c  2  2
d  3  3
e  4  4

このデータフレームが既に存在すると仮定すると、どのように単純にレベル 'C'を列インデックスに追加して、これを取得できますか:

 df
Out[92]: 
   A  B
   C  C
a  0  0
b  1  1
c  2  2
d  3  3
e  4  4

私はSOこのようなanwser python/pandas:階層列インデックスを使用して2つのデータフレームを1つに結合する方法? を見ましたが、列レベルを追加する代わりに異なるデータフレームを連結します既存のデータフレーム。

-

32
Steven G

@StevenG自身が示唆したように、より良い答え:

df.columns = pd.MultiIndex.from_product([df.columns, ['C']])

print(df)
#    A  B
#    C  C
# a  0  0
# b  1  1
# c  2  2
# d  3  3
# e  4  4
45
Romain

オプション1
set_indexおよびT

df.T.set_index(np.repeat('C', df.shape[1]), append=True).T

オプション2
pd.concatkeys、およびswaplevel

pd.concat([df], axis=1, keys=['C']).swaplevel(0, 1, 1)

enter image description here

15
piRSquared