Leo*_*Leo 4 python pivot-table dataframe pandas
枢轴代码:
result = pandas.pivot_table(result, values=['value'], index=['index'], columns=['columns'], fill_value=0)
Run Code Online (Sandbox Code Playgroud)
结果:
value value value
columns col1 col2 col3
index
idx1 14 1 1
idx2 2 0 1
idx3 6 0 0
Run Code Online (Sandbox Code Playgroud)
我试过:
result.columns = result.columns.get_level_values(1)
Run Code Online (Sandbox Code Playgroud)
然后我得到了这个:
columns col1 col2 col3
index
idx1 14 1 1
idx2 2 0 1
idx3 6 0 0
Run Code Online (Sandbox Code Playgroud)
其实我想要的是这个:
index col1 col2 col3
idx1 14 1 1
idx2 2 0 1
idx3 6 0 0
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?帮助真的很感激。先感谢您。
您需要index name通过rename_axis(新增pandas 0.18.0)删除:
df = df.rename_axis(None)
Run Code Online (Sandbox Code Playgroud)
如果还需要 remove columns name,请使用:
df = df.rename_axis(None, axis=1)
Run Code Online (Sandbox Code Playgroud)
如果使用旧版本的熊猫,请使用:
df.columns.name = None
df.index.name = None
Run Code Online (Sandbox Code Playgroud)
示例(如果[]从 中pivot_table删除,Multiindex则从列中删除):
print (result)
index columns value
0 1 Toys 5
1 2 Toys 6
2 2 Cars 7
3 1 Toys 2
4 1 Cars 9
print (pd.pivot_table(result, index='index',columns='columns',values='value', fill_value=0)
.rename_axis(None)
.rename_axis(None, axis=1))
Cars Toys
1 9 3.5
2 7 6.0
Run Code Online (Sandbox Code Playgroud)
如果使用[],得到:
result = pd.pivot_table(result, values=['value'], index=['index'], columns=['columns'], fill_value=0)
.rename_axis(None)
.rename_axis((None,None), axis=1)
print (result)
value
Cars Toys
1 9 3.5
2 7 6.0
Run Code Online (Sandbox Code Playgroud)