Я пытаюсь установить имя столбца 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.
Комментарий от основного разработчика:
Вы можете сделать это, но использование кортежей в качестве индекса ОЧЕНЬ неудобно и едва поддерживается. Они гораздо более естественно представлены (и исполнены) как 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
.values
допустимы. Я не нашел никаких ссылок на обратное, поэтому я предполагаю, что это так.