Python:从多索引数据帧中删除列。列已删除,但列名仍保留

2024-05-08 12:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建多索引数据帧的视图。我想知道为什么列名在列被删除后仍然保留。你知道吗

import panda as pd

df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8],
    'x': [2, 2, 2, 2, 12, 12, 12, 12],
    'y': [5.91, 4.43, 5.22, 1.31, 6.32, 6.78, 4.65, 1.98],
    'z': [18.61, 17.60, 18.27, 16.18, 16.81, 16.37, 67.07, 46.00]})

pivot_df = df.pivot_table(index=['id'],columns=['x'],values=['y','z'])

[output]
>>> pivot_df
       y            z       
x     2     12     2      12
id                          
1   5.91   NaN  18.61    NaN
2   4.43   NaN  17.60    NaN
3   5.22   NaN  18.27    NaN
4   1.31   NaN  16.18    NaN
5    NaN  6.32    NaN  16.81
6    NaN  6.78    NaN  16.37
7    NaN  4.65    NaN  67.07
8    NaN  1.98    NaN  46.00

>>> pivot_df.columns
MultiIndex(levels=[['y', 'z'], [2, 12]],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
           names=[None, 'x'])

在上面的代码中,我可以在0级看到['y','z'],这是预期的。现在我试着去掉“z”下的列。你知道吗

new_pivot_df = pivot_df.drop('z',axis=1,level=0)

[output]
>>> new_pivot_df
       y      
x     2     12
id            
1   5.91   NaN
2   4.43   NaN
3   5.22   NaN
4   1.31   NaN
5    NaN  6.32
6    NaN  6.78
7    NaN  4.65
8    NaN  1.98

>>> new_pivot_df.columns
MultiIndex(levels=[['y', 'z'], [2, 12]],
           labels=[[0, 0], [0, 1]],
           names=[None, 'x'])

在上面的代码中,new_pivot_df显示“z”已被删除。但是,当我检查新的_测向列我仍然在列名中看到“z”。我想了解为什么会这样,我正在寻找一个优雅的建议,从多索引数据帧中删除列(数据和名称)。你知道吗

先谢谢你。你知道吗


Tags: columns数据代码noneiddfnewoutput
1条回答
网友
1楼 · 发布于 2024-05-08 12:27:14

版本0.20.1^{}中的新功能:

new_pivot_df.columns = new_pivot_df.columns.remove_unused_levels()
new_pivot_df.columns

输出:

MultiIndex(levels=[['y'], [2, 12]],
           labels=[[0, 0], [0, 1]],
           names=[None, 'x'])

相关问题 更多 >