在Pandas中将元组设置为列名

时间:2018-06-22 16:23:08

标签: python pandas dataframe tuples

我正在尝试将pandas列名称设置为元组。 注意:列名已经是一个元组,我正尝试用另一个元组替换它。 enter image description here 我尝试过tab.rename(columns = {valeur[0] : cle}, inplace = True ) “ cle”是我的新元组(6,9),“ valeur [0]”是列名(7.25,7.35)。

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

谢谢:)

2 个答案:

答案 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