python - 为什么python pandas dataFrame的内存消耗这么大?

标签 python pandas large-files multi-index

我正在处理非常大的文本文件(大约 4GB)

  • 该文件有 3 列,其中前两列是字符串,第三列是 float 。
  • 我首先使用 pandas.read_csv() 加载此文件 - 前两列将用作索引中的键(2 个字符串的元组), float 将位于一列中。<
  • 鉴于我有一个 DataFrame(由 read_csv() 生成),我需要使用预定义的键列表从第三列获取值。

当我尝试使用 loc()lookup() 访问数据时,内存使用量急剧增加到约 16GB,这导致线程非常慢,因为到内存交换。

为什么会发生这种情况? 我的任务还有其他选择吗?

这是我的代码的快照:

similarity_df = pd.read_csv(similarity_dir, sep=' ', header=None, index_col=[0, 1])

values_df = similarity_df.loc[list_tup]

最佳答案

我也遇到了同样的问题。这是因为多索引。如果可能,避免对庞大数据集使用多重索引

关于python - 为什么python pandas dataFrame的内存消耗这么大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378006/

相关文章:

python - 当字典键是列表时将字典映射到数据框

python - 如何向 pandas 数据框添加条件行

python - 将计数添加到由 group-by cut 生成的 df

python - 如何在 plone.app.testing 中添加 Members 文件夹?

python - 如何处理 "un-importing"一个 SINGLE 模块?

pandas - 如何让 scikit 学会找到简单的非线性关系

python - pymongo 错误 : bson. errors.InvalidBSON: 'utf8' 编解码器无法解码位置 25 中的字节 0xa1:无效的起始字节

large-files - 如何处理大文本文件?

vim - 在 VIM 中处理大文件

vim - 如何使用vim,sed或其他类似工具将大文件(100万行)中的成对连续行连接起来?