我有一个Pandas dataframe,看起来像这样:
df = pd.DataFrame ({
'id': [1, 17, 19, 17, 22, 3, 0, 3],
'color': ['Green', 'Blue', 'Orange', 'Yellow', 'White', 'Silver', 'Purple', 'Black'],
'shape' : ['Circle', 'Square', 'Circle', 'Triangle', 'Rectangle', 'Circle', 'Square', 'Triangle'],
'person' : ['Sally', 'Bob', 'Tim', 'Sue', 'Bill', 'Diane', 'Brian', 'Sandy']
})
df
id color shape person
0 1 Green Circle Sally
1 17 Blue Square Bob
2 19 Orange Circle Tim
3 17 Yellow Triangle Sue
4 22 White Rectangle Bill
5 3 Silver Circle Diane
6 0 Purple Square Brian
7 3 Black Triangle Sandy
我将索引设置为color
:df.set_index ('color', inplace = True )
id shape person
color
Green 1 Circle Sally
Blue 17 Square Bob
Orange 19 Circle Tim
Yellow 17 Triangle Sue
White 22 Rectangle Bill
Silver 3 Circle Diane
Purple 0 Square Brian
Black 3 Triangle Sandy
我想只选择列id
和person
,只选择索引2和3。为此,我使用以下命令:
new_df = df.loc[:, ['id', 'person']][2:4]
new_df
id person
color
Orange 19 Tim
Yellow 17 Sue
感觉这可能不是最“优雅”的方法。除了使用[2:4]
对行进行切片,是否有一种方法可以有效地*组合.loc
(以获得列)和.iloc
(以获得行)?
谢谢!
2条答案
按热度按时间jrcvhitl1#
或者,您可以从
df.iloc
开始(指定切片或任意索引),并在最后过滤列名:gblwokeq2#
一种选择是删除
df.set_index('color', inplace=True)
并以如下方式使用loc
:输出: