#python #pandas
#python #pandas
Вопрос:
Я создаю сводную таблицу из фрейма данных, предоставляя 2 столбца в качестве сводных входных данных, как показано в приведенном ниже коде. После применения pivot мне нужно использовать этот накопленный вывод для объединения с аналогичным фреймом данных столбца, для этого я хочу отказаться от имени (‘Brand amp; type’), которое также отображается над именем индекса, как я могу этого добиться. пожалуйста, обратите внимание, что я хочу сохранить вывод в стеке
import pandas as pd
cars = {'day':['aug','aug','sep','sep','aug'],
'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Hyundai Elite i20'],
'Type':['sedan,','sedan','hatchback','hatchback','hatchback'],
'Down Price': [22000,25000,27000,35000,10000]
}
df = pd.DataFrame(cars, columns = ['day','Brand', 'Type','Down Price'])
dfpivot=pd.pivot_table(df,index=['day'],columns=['Brand','Type'],values=['Down Price'],aggfunc=np.max)
dfpivot.columns = dfpivot.columns.droplevel(0)
Я попытался сбросить индекс, но это не сработало
dfpivot.rename_axis(None, axis=1).reset_index()
Затем я попытался удалить индекс, который также не сработал. Как я могу удалить название бренда и тип, который отображается над индексом. Заранее благодарю вас.
после добавления решения
dfpivot.columns.name=[None,None]
Обратная трассировка:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-102-ef1eb88ee6b2> in <module>
10 dfpivot=pd.pivot_table(df,index=['day'],columns=['Brand','Type'],values=['Down Price'],aggfunc=np.max)
11
---> 12 dfpivot.columns.name=[None,None]
~AppDataLocalContinuumanaconda3libsite-packagespandascoreindexesbase.py in name(self, value)
1192 "'MultiIndex.set_names' instead."
1193 )
-> 1194 maybe_extract_name(value, None, type(self))
1195 self._name = value
1196
~AppDataLocalContinuumanaconda3libsite-packagespandascoreindexesbase.py in maybe_extract_name(name, obj, cls)
5402 # GH#29069
5403 if not is_hashable(name):
-> 5404 raise TypeError(f"{cls.__name__}.name must be a hashable type")
5405
5406 return name
TypeError: MultiIndex.name must be a hashable type
Ответ №1:
Это столбец names
. Просто установите их на None
:
dfpivot.columns.names = [None, None]
dfpivot.index.names = [None] # only do this if you do not want the name of your index (day)
Комментарии:
1. Привет, большое спасибо за такой быстрый ответ. Я попробовал это после вашего предложения, оно выдает эту ошибку-TypeError: MultiIndex.name должен быть хэшируемый тип
2. Пожалуйста, добавьте полный ответ на вопросы.
3. добавлено по запросу
4. @DD08 На основе обратной трассировки похоже, что вы использовали
name
единственное, а неnames
множественное число:dfpivot.columns.name=[None,None]
это должно бытьdfpivot.columns.names = [None, None]
5. Это_ис_крис. Я допустил такую незначительную ошибку, спасибо за предложение и указание на ошибку