根据列表索引选择熊猫行


105

我有一个数据框df:

   20060930  10.103       NaN     10.103   7.981
   20061231  15.915       NaN     15.915  12.686
   20070331   3.196       NaN      3.196   2.710
   20070630   7.907       NaN      7.907   6.459

然后,我想选择列表中指示的具有某些序列号的行,假设这里是[1,3],然后向左移:

   20061231  15.915       NaN     15.915  12.686
   20070630   7.907       NaN      7.907   6.459

如何或什么功能可以做到这一点?

Answers:


130
List = [1, 3]
df.ix[List]

应该做的把戏!当我用数据帧建立索引时,我总是使用.ix()方法。它是如此容易和灵活...

UPDATE 这不再是可接受的索引编制方法。该ix方法已弃用。使用.iloc基于整数索引和.loc基于标签索引。


14
现在已弃用,.iloc应该用于位置索引
t_warsop

86

您还可以使用iloc:

df.iloc[[1,3],:]

如果由于先前的计算,如果数据框中的索引与行的顺序不对应,则此方法将无效。在这种情况下,请使用:

df.index.isin([1,3])

...如其他回应所建议。



4

对于大型数据集,通过skiprows参数仅读取选定的行会节省内存。

pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)

现在,这将从文件中返回一个DataFrame,该文件将跳过除1和3之外的所有行。


细节

文档

skiprows :类似于列表或整数或可调用的列表,默认 None

...

如果可调用,则将针对行索引评估可调用函数,如果应跳过该行,则返回True,否则返回False。有效的可调用参数的一个示例是lambda x: x in [0, 2]

此功能适用于熊猫0.20.0+版本。另请参见相应的问题相关文章

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.