gpt4 book ai didi

python - 解析两个大数据帧时出现内存错误

转载 作者:行者123 更新时间:2023-12-01 01:10:42 24 4
gpt4 key购买 nike

我有两个数据帧,每个数据帧大约 400k 行,称之为 a 和 b。我想要做的是对于 df b 中的每一行,找到数据框 a 中该行的帐号。如果存在,我想从数据帧 a 中删除该行。问题是,当我尝试运行此代码时,我不断收到内存错误。最初我使用 iterrows,但是在处理大型数据集时这似乎很糟糕,所以我改用 apply,但我遇到了同样的错误。下面是我正在尝试的简化伪代码:

def reduceAccount(accountID):
idx = frameA.loc[frameA["AccountID"] == accountID].index
frameB.drop(idx, inplace=True)

frameB["AccountID"].apply(reduceAccount)

我什至尝试过一些恶作剧,例如迭代前几百/千行,但在一个循环之后,我仍然遇到内存错误,这让我认为我仍在将内容加载到内存中而不是清除。有没有比我尝试的更好的方法来减少 dataframeA ?请注意,我不想合并帧(还),只是删除数据帧 a 中在数据帧 b 中具有重复键的任何行。

最佳答案

问题是,为了查看要过滤的所有值,您需要在某个时刻将两个 DF 存储在内存中。您可以通过不使用 apply() 来稍微提高效率,它仍然是一个迭代器。以下代码是直接使用 bool 掩码的更高效的矢量化方法。

dfB[~dfB["AccountID"].isin(dfA["AccountID"])]

但是,如果存储是问题所在,那么这可能仍然不起作用。需要考虑的一些方法是对数据进行分块,正如您所说的您已经尝试过的那样,或者 enhancing performance 文档中的一些选项。

关于python - 解析两个大数据帧时出现内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54891872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com