更高效的 pandas python 命令来删除 Nan 行?

问题描述 投票:0回答:2

我有一个叫 TI 的 DF。我想删除 BookDate 为 NaN 的行。于是我就跑了:

TI = TI.dropna(subset=['#Book_Date'])

当我运行这个时,内存由于某种原因被耗尽(我在一台 100GB RAM 的机器上,大约 50% 的 RAM 用于保存 TI,当我运行 dropna 行时,它会达到 100%用法并且从未完成执行命令)。它正在制作一个全新的副本吗? TI 是一个 6400 万行数据帧,因此需要更加高效。

python pandas nan
2个回答
0
投票

到目前为止,最好的方法是通过使用列必须是有限的来做到这一点。为此你需要 numpy。

from pandas import *
import numpy

TI = TI[np.isfinite(TI['#Book_Date'])]

0
投票

这可以使用

query
来完成,但需要首先从列名称中删除特殊字符
#

TI = TI.rename(columns={"#Book_Date": "Book_Date"})  # remove the '#' symbol from column name
TI = TI.query("Book_Date.notnull()")  # memory-efficient dropna

基于“DataFrame”行的内存高效过滤

© www.soinside.com 2019 - 2024. All rights reserved.