我有一个包含约 230 万行的 csv 文件。我想保存数据帧内两列中具有非 nan 值的行的子集(~1.6M)。我想继续使用 pandas 来做到这一点。现在,我的代码如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
catalog
它保存具有非 nan 值的行。然后我用这些行作为条目创建一个新目录
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')
Run Code Online (Sandbox Code Playgroud)
原则上这应该可行。通过将每一行读入字典中,速度会加快一些。然而,执行所有 230 万行的时间太长了。有什么更好的方法来解决这个问题?