同时选择一个MultiIndex和一个'normal'列

问题描述 投票:0回答:1

我的一些专栏是 MultiIndex,有些不是。 我似乎无法同时选择这两种类型。

例如,我可能想要列

['0', 'A']
以及列
['2']

Name    0                       1            2         
Col     A           B                               
0       0.409511    -0.537108   -0.355529    0.212134 
1       -0.332276   -1.087013    0.083684    0.529002 
2       1.138159    -0.327212    0.570834    2.337718 

df.loc[:,['0', '2']]
确实可以选择三列。我希望解决方案类似于
df.loc[:,[('0', 'A'), '2']]
,但这行不通。

python pandas multi-index
1个回答
0
投票

没有综合索引和简单索引这样的东西。

你的第二级必须有空字符串(或者可能是 NaNs?)

d = {'index': [0, 1, 2],
 'columns': [(0, 'A'), (0, 'B'), (1, ''), (2, '')],
 'data': [[0.409511, -0.537108, -0.355529, 0.212134],
  [-0.332276, -1.087013, 0.083684, 0.529002],
  [1.138159, -0.327212, 0.570834, 2.337718]],
 'index_names': [None],
 'column_names': ['Name', 'Col']}

df = pd.DataFrame.from_dict(d, orient='tight')
df

因此您应该使用:

df.loc[:, [(0, 'A'), (2, '')]]
© www.soinside.com 2019 - 2024. All rights reserved.