Python 数据透视表后的堆栈输出格式
我从数据框中创建了一个透视表,方法是提供两列作为透视输入,如下面的代码所示。应用pivot后,我需要使用此堆叠输出与类似的列数据帧合并,因此我希望放弃同样出现在索引名称上方的名称(“品牌和类型”),如何实现这一点。请注意,我想保持堆叠输出Python 数据透视表后的堆栈输出格式,python,pandas,Python,Pandas,我从数据框中创建了一个透视表,方法是提供两列作为透视输入,如下面的代码所示。应用pivot后,我需要使用此堆叠输出与类似的列数据帧合并,因此我希望放弃同样出现在索引名称上方的名称(“品牌和类型”),如何实现这一点。请注意,我想保持堆叠输出 import pandas as pd cars = {'day':['aug','aug','sep','sep','aug'], 'Brand': ['Honda Civic','Toyota Corolla','Ford Focus',
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]
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\base.py in name(self, value)
1192 "'MultiIndex.set_names' instead."
1193 )
-> 1194 maybe_extract_name(value, None, type(self))
1195 self._name = value
1196
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\base.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
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
10 dfpivot=pd.pivot_表(df,索引=['day'],列=['Brand','Type'],值=['Down Price'],aggfunc=np.max)
11
--->12 dfpivot.columns.name=[无,无]
名称为~\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\index\base.py(self,value)
1192“'MultiIndex.set_names'代替。”
1193 )
->1194可能提取名称(值、无、类型(self))
1195自身名称=值
1196
~\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\indexes\base.py in-maybe\u extract\u name(name,obj,cls)
5402#GH#29069
5403如果不可散列(名称):
->5404 raise TypeError(f“{cls.\u name\u\u}.name必须是可哈希类型”)
5405
5406返回名称
TypeError:MultiIndex.name必须是可哈希类型
这些是列的名称。只需将它们设置为None
:
dfpivot.columns.names = [None, None]
dfpivot.index.names = [None] # only do this if you do not want the name of your index (day)
嘿,非常感谢你这么及时的回复。在你的建议之后,我尝试了这个方法,它抛出了以下错误类型错误:MultiIndex.name必须是可哈希类型请添加问题的完整回溯。添加为requested@DD08根据回溯,您似乎使用了name
单数而非name
复数:dfpivot.columns.name=[None,None]
它应该是dfpivot.columns.names=[None,None]
它是。我犯了这么小的错误,谢谢你们的建议并指出错误