我有一个包含约230万行的CSV文件。我希望保存子集(约160万行),这些行在数据框中的两列中具有非NAN值。我希望继续使用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)
该代码块存储目录
中具有非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')
原则上,这应该可以工作。通过将每一行读入到字典中,可以加快速度。然而,对于所有的2.3M行记录来说,执行时间太长了。有什么更好的方法来解决这个问题?
dfx = df[df['z'].notnull()]
来查看它的结果吗? - Joe Ferndzcatalog[(catalog['z'].notna()) & (catalog['B'].notna())].to_csv('slim_catalog.csv')
。 - Maximilian Peters