我想把这个数据透视表展平,但是我无法找到删除/隐藏/删除“ID”的多索引行的方法。
相关代码:

df = df [['B1','B2','B3','B4']]
df = pd.pivot_table(df,values=['BUCKET'],index=['ID'],columns=['TYPE'],aggfunc=len,fill_value='',margins=True)

结果是:
      BUCKET
TYPE  B1     B2       B3      B4
ID
1     236    data1    data2   data3
2     323    data4    data5   data3
3     442    data6    data2   data4
4     543    data8    data2   data3
5     676    data1    data8   data4

下一行通过删除第一行使我更接近
df.columns = df.columns.droplevel(0)

结果是:
TYPE  B1     B2       B3      B4
ID
1     236    data1    data2   data3
2     323    data4    data5   data3
3     442    data6    data2   data4
4     543    data8    data2   data3
5     676    data1    data8   data4

我需要进一步展平数据透视表并删除“TYPE”行标题,将其替换为“ID”,并隐藏/删除上一个“ID”行,使其看起来像这样干净整洁:
ID    B1     B2       B3      B4
1     236    data1    data2   data3
2     323    data4    data5   data3
3     442    data6    data2   data4
4     543    data8    data2   data3
5     676    data1    data8   data4

我试过用这些操作列/行,但是没有用。。。建议?谢谢您!
pd.melt(df,id_vars=['ID'])
results.columns = results.columns.get_level_values(1)
pivot_table.values.reset_index().values.tolist()

最佳答案

您可以在pandas0.18.0-rename_axis中使用新函数来删除列名,然后可能会reset_index

print df
TYPE   B1     B2     B3     B4
ID
1     236  data1  data2  data3
2     323  data4  data5  data3
3     442  data6  data2  data4
4     543  data8  data2  data3
5     676  data1  data8  data4

print df.rename_axis(None, axis=1)
     B1     B2     B3     B4
ID
1   236  data1  data2  data3
2   323  data4  data5  data3
3   442  data6  data2  data4
4   543  data8  data2  data3
5   676  data1  data8  data4

print df.rename_axis(None, axis=1).reset_index()
   ID   B1     B2     B3     B4
0   1  236  data1  data2  data3
1   2  323  data4  data5  data3
2   3  442  data6  data2  data4
3   4  543  data8  data2  data3
4   5  676  data1  data8  data4

关于python - 如何展平python/pandas数据透视表并处理列名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36752439/

10-12 18:52