Python 熊猫:使用数组索引所有值
我想选择具有特定索引的所有行。我的数据框如下所示:Python 熊猫:使用数组索引所有值,python,pandas,Python,Pandas,我想选择具有特定索引的所有行。我的数据框如下所示: >>> df Code Patient Date 1 2003-01-12 00:00:00 a 2003-02-13 00:00:00 b 2003-02-14 00:00:00 ba 2 2001-1-17 22:00:00 z 2002-1
>>> df
Code
Patient Date
1 2003-01-12 00:00:00 a
2003-02-13 00:00:00 b
2003-02-14 00:00:00 ba
2 2001-1-17 22:00:00 z
2002-1-21 00:00:00 d
2003-1-21 00:00:00 a
2005-12-1 00:00:00 ba
选择第一个(患者)索引之一有效:
>>> df.loc[1]
Code
Patient Date
1 2003-01-12 00:00:00 a
2003-02-13 00:00:00 b
2003-02-14 00:00:00 ba
但选择第一个(患者)索引的倍数不会:
>>> df.loc[[1, 2]]
Code
Patient Date
1 2003-01-12 00:00:00 a
2 2001-1-17 22:00:00 z
但是,我希望获得整个数据帧(结果是if[1,1,1,2]
即原始数据帧)
当使用单个索引时,它可以正常工作。例如:
>>> df.reset_index().set_index("Patient").loc[[1, 2]]
Date Code
Patient
1 2003-01-12 00:00:00 a
2003-02-13 00:00:00 b
2003-02-14 00:00:00 ba
2 2001-1-17 22:00:00 z
2002-1-21 00:00:00 d
2003-1-21 00:00:00 a
2005-12-1 00:00:00 ba
TL;DR为什么在使用多个索引时必须重复索引,而在使用单个索引时则不必重复索引
编辑:显然,它可以类似于:
>>> df.loc[df.index.get_level_values("Patient").isin([1, 2])]
但我觉得这很肮脏。这是一种方式吗?或者是其他更好的方式吗?对于Pandas verison 0.14,根据上述评论,推荐的方式是:
df.loc[([1,2],),:]
df.loc[1][1:2]应选择两行哪种版本?你能显示df.info()吗?@Jeff我也能用0.13和0.14得到这个。只有在0.14中,你才能做
df.loc[([1,2],),:]
来得到你想要的。@joris工作起来很有魅力!非常感谢!顺便问一下,是否可以在不使用KeyError
s的情况下实现相同的功能。也就是说,当3缺失时,如果我执行df.loc[([1,3],),:]
,则只返回1的结果