假设我有一个如下所示的数据框:
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不同的数据帧而不是为已经存在的数据帧添加列级别。
-
答案 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
T
和df.T.set_index(np.repeat('C', df.shape[1]), append=True).T
pd.concat
选项2
keys
,swaplevel
和pd.concat([df], axis=1, keys=['C']).swaplevel(0, 1, 1)
yield* anotherGenerator(i);
答案 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