我正在尝试将pandas列名称设置为元组。
注意:列名已经是一个元组,我正尝试用另一个元组替换它。
enter image description here
我尝试过tab.rename(columns = {valeur[0] : cle}, inplace = True )
“ cle”是我的新元组(6,9),“ valeur [0]”是列名(7.25,7.35)。
我收到错误消息:“对于MultiIndex,名称应类似于列表”
谢谢:)
答案 0 :(得分:3)
您可以这样做:
import pandas as pd
df = pd.DataFrame([[0, 0], [0, 0], [1, 1]], columns=[(7.25, 7.35), (7.35, 7.5)])
new_cols = df.columns.values.copy()
new_cols[0] = (6, 9)
df.columns = new_cols
print(df)
输出:
(6, 9) (7.35, 7.5)
0 0 0
1 0 0
2 1 1
答案 1 :(得分:1)
这是一个已知问题:Option to suppress automatic conversion of tuples to MultiIndex。
主要开发者的评论:
您可以执行此操作,但是使用元组作为索引非常尴尬且几乎没有 支持的。这些更自然地代表(和表现) 作为MultiIndexes。我从未见过这样的情况 好主意。
该线程中建议的解决方案建议使用tupleize_cols=False
:
tab = pd.DataFrame([[1], [2], [3]], columns=[(7.25, 7.35)])
valeur = [(7.25, 7.35)]
cle = (6, 9)
tab.columns = pd.Index([i if i != valeur[0] else cle for i in tab],
tupleize_cols=False)
print(tab)
(6, 9)
0 1
1 2
2 3