如何从熊猫的列子集中选择行子集

时间:2019-05-27 08:38:40

标签: python pandas

考虑这是我的熊猫数据框

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                    'num_wings': [2, 0, 0, 0],
                    'num_specimen_seen': [10, 2, 1, 8]},
                   index=['falcon', 'dog', 'spider', 'fish'])

>>> df
        num_legs  num_specimen_seen  num_wings
falcon         2                 10          2
dog            4                  2          0
spider         8                  1          0
fish           0                  8          0

,这些是我需要选择row_index=[1,3]的行。对于单列,我可以使用这种方式

>>> df.num_wings[row_index]
dog     0
fish    0

但是我想在一部分列而不是整个数据框中这样做

df[['num_legs','num_wings']][row_index]

给出KeyError: '[1 3] not in index'。如何从pandas数据框中的列子集中选择行的子集?

1 个答案:

答案 0 :(得分:1)

DataFrame.iloc与按Index.get_indexer的名称按列的位置一起使用:

a = df.iloc[row_index, df.columns.get_indexer(['num_legs','num_wings'])]
print (a)
      num_legs  num_wings
dog          4          0
fish         0          0

如果需要fancy indexing将值转换为numpy数组:

#0.24+ 
a = df.to_numpy()[row_index, df.columns.get_indexer(['num_legs','num_wings'])]
#pandas below
a = df.values[row_index, df.columns.get_indexer(['num_legs','num_wings'])]
print (a)
[4 0]