gpt4 book ai didi

python - 如何展平 python/pandas 数据透视表并操作列名?

转载 作者:行者123 更新时间:2023-11-28 22:37:13 25 4
gpt4 key购买 nike

我想展平这个数据透视表,但我无法想出一种方法来删除/隐藏/删除“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()

最佳答案

您可以在 pandas 0.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com