python - 减少 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')]
排除特定类型/字符以删除其中包含此字符的行的更好方法是什么?因为这一直在崩溃。
解决方案
您可以使用处理内存问题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
这将在后台静默执行分块操作。
推荐阅读
- python - 扩展最大连接数 - Python websockets 9.1 和 simple-websocket-server 0.4.1
- r - 如何从当前运行的 R 脚本的上下文中获取绝对路径?
- routes - 访问我的 FastAPI 项目中的另一条路线
- python-3.x - 从excel文件中获取数据库格式的数据[Python]
- javascript - 按另一个表在 mongoose-aggregate-paginate-v2 中排序
- if-statement - Fortran 中的跳线
- amazon-web-services - 使用 AWS Cognito 时的加密访问令牌 (JWE)
- mysql - 如何在数据库列中搜索 JSON 键(MYSQL)
- android - 如何在 PlaybackTransportControlGlue android TV 上动态更改子图块
- c# - 如何将 Xamarin.Essentials MediaPicker 与 MVVM 和 DataBinding 一起使用