Ответ 1
Как предложил сам @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
скажем, у меня есть фреймворк данных, который выглядит так:
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: как объединить два фрейма данных в один с иерархическим индексом столбцов?, но этот concat другой файловый фрейм вместо добавления уровень столбца к уже существующему файловому кадру.
-
Как предложил сам @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
set_index
и T
df.T.set_index(np.repeat('C', df.shape[1]), append=True).T
вариант 2
pd.concat
, keys
и swaplevel
pd.concat([df], axis=1, keys=['C']).swaplevel(0, 1, 1)