![](/img/trans.png)
[英]Pandas: Change a specific column name in dataframe having multilevel columns
[英]How to add multilevel column name to specific column only(not all the columns) in python pandas.DataFrame?
有關問題背景,請參見此處 。 我只想將C
添加到B
列。
我需要輸出為:
df
Out[92]:
A B
C
a 0 0
b 1 1
c 2 2
d 3 3
e 4 4
我嘗試了以下示例 :
dfnew=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
columns=[('c','b')] #changed from columns=[('c','a'),('c','b')]
dfnew.columns=pd.MultiIndex.from_tuples(columns)
但這是行不通的。 ValueError: Length mismatch: Expected axis has 2 elements, new values have 1 elements
您可以使用MultiIndex.from_arrays
:
df.columns = pd.MultiIndex.from_arrays([df.columns, ['','C']])
A B
C
a 0 0
b 1 1
c 2 2
d 3 3
e 4 4
注意, pd.MultiIndex.from_tuples
, pd.MultiIndex.from_tuples
需要一個元組列表。 如果您檢查源代碼,你會發現,如果不是的話,它會創建一個從嵌套列表zipping
它:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.