我正在尝试将 pandas 列名称设置为元组。 注意:列名已经是一个元组,我正尝试用另一个元组替换它。 我试过这个
tab.rename(columns = {valeur[0] : cle}, inplace = True )
'cle' 是我的新元组 (6, 9),'valeur[0]' 是列名称 (7.25, 7.35)。
我收到错误:“对于 MultiIndex,名称应该类似于列表”
你可以这样做:
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
这是一个已知问题:禁止将元组自动转换为 MultiIndex 的选项。
主要开发人员的评论:
你可以这样做,但是使用元组作为索引非常尴尬并且几乎没有 支持的。这些更自然地表现出来(并且表现出色) 作为多重索引。我从未见过这实际上是一个案例 好主意。
该线程中提出的解决方案建议使用
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