我有一个dataframe 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
如何或什么功能可以做到这一点?
8条答案
按热度按时间isr3a4wc1#
.iloc
用于基于整数的索引,.loc
用于基于标签的索引。请参阅以下示例:ltskdhd12#
您还可以使用iloc:
如果由于之前的计算, Dataframe 中的索引与行的顺序不对应,则此方法将不起作用。在这种情况下,请用途:
......正如其他答复中所建议的那样。
uwopmtnx3#
另一种方法(虽然是较长的代码)但比上面的代码要快.用%timeit函数检查一下:
PS:你弄清楚原因
kcwpcxri4#
如果
index_list
包含所需的索引,则可以通过执行以下操作来获取包含所需行的 Dataframe这是基于截至2021年3月的最新文档。
nafvub8i5#
对于大型数据集,通过
skiprows
参数只读取选定的行可以节省内存。示例
现在,这将从文件中返回一个DataFrame,该文件将跳过除1和3之外的所有行。
详细数据
从docs:
skiprows
:列表类、整型或可调用,默认值为None
...
如果是可调用的,则将根据行索引对可调用函数求值,如果应跳过该行,则返回True,否则返回False。
lambda x: x in [0, 2]
是一个有效的可调用参数示例这个功能在panda0.20.0+版本中有效。另请参见corresponding issue和相关帖子。
qq24tv8q6#
解决这个问题的方法有很多,上面列出的是最常用的解决方法。我想再增加两种方法,以防有人在寻找替代方法。
dzjeubhm7#
你要做的是通过索引过滤 Dataframe ,目前在Pandas中最好的方法是:
单一索引
多重索引
tzxcd3kk8#
若要从筛选的索引取得新的DataFrame:
对于我的问题,我需要从索引中创建一个新的 Dataframe 。我找到了一个直接的方法来实现这一点:
您也可以使用这个来筛选数据行。请参阅documentation以取得详细信息。