如何在python.DataFrame中仅向特定列(而不是所有列)添加多级列名?

如何在python.DataFrame中仅向特定列(而不是所有列)添加多级列名?,python,pandas,dataframe,multi-index,multi-level,Python,Pandas,Dataframe,Multi Index,Multi Level,请参阅问题背景。我只想将C添加到B列 我需要输出为: df Out[92]: A B C a 0 0 b 1 1 c 2 2 d 3 3 e 4 4 我试着: 但这是行不通的值错误:长度不匹配:预期轴有2个元素,新值有1个元素 请注意,正如名称所示,它需要一个元组列表。如果您检查源代码,您将看到如果不是这样,它将通过zippingit从嵌套列表中创建一个: list(zip(*[df.

请参阅问题背景。我只想将
C
添加到
B

我需要输出为:

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

但这是行不通的<代码>值错误:长度不匹配:预期轴有2个元素,新值有1个元素


请注意,正如名称所示,它需要一个元组列表。如果您检查源代码,您将看到如果不是这样,它将通过
zipping
it从嵌套列表中创建一个:

list(zip(*[df.columns, ['','C']]))
# [('A', ''), ('B', 'C')]
这就是为什么你没有得到你想要的


如果要通过指定列列表执行相同操作,可以执行以下操作:

cols = [(i, 'C') if i in ['B','D'] else (i, '') for i in df.columns]
# [('A', ''), ('B', 'C'), ('C', ''), ('D', 'C')]
df.columns = pd.MultiIndex.from_tuples(cols)

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

我们可以为第n列指定位置吗?或者通过特定的列名(如本例中的列名),我们可以指定
C
只能放在
B
下吗?因为如果在
B
之前有很多列,这将非常麻烦,而在我的实际案例中,这些列是存在的!很快更新@Rex5Check now@rex5这很好,如果你找到其他方法,请更新!谢谢如果有人有更好的方法(比如对pd.MultiIndex的一些操作),请发帖子!如果比被接受的答案更好,将被接受。谢谢
list(zip(*[df.columns, ['','C']]))
# [('A', ''), ('B', 'C')]
cols = [(i, 'C') if i in ['B','D'] else (i, '') for i in df.columns]
# [('A', ''), ('B', 'C'), ('C', ''), ('D', 'C')]
df.columns = pd.MultiIndex.from_tuples(cols)

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