python pandas - 基于列名构建子集

3 投票
1 回答
1332 浏览
提问于 2025-04-18 15:54

这是我的多重索引数据框:

                             A                    B
                             Net   Upper   Lower  Mid  Zsore
Answer option                                                
More than once a day          0%   0.22%  -0.12%   2    65 
Once a day                    0%   0.32%  -0.19%   3    45
Several times a week          2%   2.45%   1.10%   4    78
Once a week                   1%   1.63%  -0.40%   6    65

我想根据第二层的列名来创建一个子集(没什么复杂的),只保留“Net, Upper, Zscore”这几列。

                             Net   Upper  Zsore
Answer option                                               
More than once a day          0%   0.22%    65 
Once a day                    0%   0.32%    45
Several times a week          2%   2.45%    78
Once a week                   1%   1.63%    65

我尝试过的方法失败了,我想这可能是因为我不知道怎么处理这两层的列?

df = df[[u'Net',u'Upper',u'Zsore']]

1 个回答

2

也许可以这样做:

>>> j = df.columns.get_level_values(1).isin(['Net', 'Upper', 'Zsore'])
>>> df.loc[:,j]
                       A             B
                     Net  Upper  Zsore
Answer option                         
More than once a day  0%  0.22%     65
Once a day            0%  0.32%     45
Several times a week  2%  2.45%     78
Once a week           1%  1.63%     65

撰写回答