【发布时间】:2021-03-06 15:48:56
【问题描述】:
我有一个大约 230 万行的 csv 文件。我想保存数据框内两列中具有非 nan 值的行的子集(~1.6M)。我想继续使用熊猫来做到这一点。现在,我的代码如下所示:
import pandas as pd
catalog = pd.read_csv('catalog.txt')
slim_list = []
for i in range(len(catalog)):
if (pd.isna(catalog['z'][i]) == False and pd.isna(catalog['B'][i]) == False):
slim_list.append(i)
其中包含具有非 nan 值的 catalog 的行。然后我用这些行作为条目制作一个新目录
slim_catalog = pd.DataFrame(columns = catalog.columns)
for j in range(len(slim_list)):
data = (catalog.iloc[j]).to_dict()
slim_catalog = slim_catalog.append(data, ignore_index = True)
pd.to_csv('slim_catalog.csv')
原则上,这应该可行。通过将每一行读入一个字典来加快速度。但是,执行所有 230 万行需要非常非常长的时间。有什么更好的方法来解决这个问题?
【问题讨论】:
-
您尝试
dfx = df[df['z'].notnull()]看看结果如何? -
我认为您可以过滤并保存您的数据集
catalog[(catalog['z'].notna()) & (catalog['B'].notna())].to_csv('slim_catalog.csv')