考虑这是我的熊猫数据框
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数据框中的列子集中选择行的子集?
答案 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]