pandas multindex基于第二列选择/删除行

时间:2019-12-03 03:25:19

标签: python pandas dataframe

question复制示例,请考虑以下数据框:

mux = pd.MultiIndex.from_arrays([
    list('aaaabbbbbccddddd'),
    list('tuvwtuvwtuvwtuvw')
], names=['one', 'two'])

df = pd.DataFrame({'col': np.arange(len(mux))}, mux)

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   t      4
    u      5
    v      6
    w      7
    t      8
c   u      9
    v     10
d   w     11
    t     12
    u     13
    v     14
    w     15

比方说,我只想保留第二级多重索引的两行。即我的最终数据帧如下所示:

         col
one two     
a   t      0
    u      1
b   t      4
    u      5
c   u      9
    v     10
d   w     11
    t     12

达到上述目标的最佳方法是什么?理想情况下,我希望这样做(显然是错误的语法)

df.iloc[(:, :2)]

即级别0的所有值,级别1的前2个值。

2 个答案:

答案 0 :(得分:3)

class App extends Component{ render(){ return( <Router> <div> <Navbar bg="light" expand="lg"> <Navbar.Brand as={Link} to='/'>Asset Management</Navbar.Brand> <Navbar.Toggle aria-controls="basic-navbar-nav" /> <Navbar.Collapse id="basic-navbar-nav"> <Nav className="mr-auto"> <Nav.Link as={Link} to='/'>Home</Nav.Link> <NavDropdown title="Manage" id="basic-nav-dropdown"> <NavDropdown.Item as={Link} to='/manage/category'> Categories </NavDropdown.Item> </NavDropdown> </Nav> </Navbar.Collapse> </Navbar> <Route path='/' exact component={Home}/> <Route path='/manage/category'> <AddCategories /> <ViewCategories /> </Route> </div> </Router> )} } 与groupby一起使用

head(2)

答案 1 :(得分:2)

这是groupby的一种方式:

df[df.groupby('one').cumcount().le(1)]

输出:

         col
one two     
a   t      0
    u      1
b   t      4
    u      5
c   u      9
    v     10
d   w     11
    t     12