首页 > 解决方案 > 减少 df.loc 的内存消耗并删除特定列中特定字符的行

问题描述

我正在 python 中加载一个大数据框,有几列和数百万行,所以这肯定是相当消耗内存的。要排除特定列中的某些类型,我使用:

import pandas as pd
files = glob.glob("Path/*.csv")
dfs = [pd.read_csv(f, sep='\t', encoding='unicode_escape') for f in files]
df = pd.concat(dfs,ignore_index=True)
df = df.loc[~df['Type'].isin('A', 'B',...,'F')]

排除特定类型/字符以删除其中包含此字符的行的更好方法是什么?因为这一直在崩溃。

标签: pythonpandas

解决方案


您可以使用处理内存问题dask

import dask.dataframe as dd

df = dd.read_csv('file.csv')
df = df.loc[~df.Type.isin(['A', 'B',...,'F'])]
df = df.compute() # this will give back the pandas dataframe

这将在后台静默执行分块操作。


推荐阅读