在 Pandas 中设置一个元组作为列名

问题描述 投票:0回答:2

我正在尝试将 pandas 列名称设置为元组。 注意:列名已经是一个元组,我正尝试用另一个元组替换它。 enter image description here 我试过这个

tab.rename(columns = {valeur[0] : cle}, inplace = True )
'cle' 是我的新元组 (6, 9),'valeur[0]' 是列名称 (7.25, 7.35)。

我收到错误:“对于 MultiIndex,名称应该类似于列表”

python pandas dataframe tuples
2个回答
6
投票

你可以这样做:

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
投票

这是一个已知问题:禁止将元组自动转换为 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
© www.soinside.com 2019 - 2024. All rights reserved.