如何简单地将列级别添加到pandas数据帧

时间:2016-10-24 19:03:53

标签: python pandas dataframe multi-level

假设我有一个如下所示的数据框:

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: how to combine two dataframes into one with hierarchical column index?但是这个concat不同的数据帧而不是为已经存在的数据帧添加列级别。

-

4 个答案:

答案 0 :(得分:35)

正如@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

答案 1 :(得分:12)

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

pd.concat

选项2
keysswaplevelpd.concat([df], axis=1, keys=['C']).swaplevel(0, 1, 1)

yield* anotherGenerator(i);

enter image description here

答案 2 :(得分:1)

一种解决方案,可以将名称添加到新的级别,并且比已经提出的其他答案更容易被看到:

POST https://directline.botframework.com/v3/directline/tokens/generate
Authorization: Bearer SECRET

答案 3 :(得分:0)

MultiIndex(附加'E')的另一种方法:

df.columns = PD.MultiIndex.from_tuples(map(lambda x: (x[0], 'E', x[1]), df.columns))

   A  B
   E  E
   C  D
a  0  0
b  1  1
c  2  2
d  3  3
e  4  4