如何将熊猫数据帧逐行写入 CSV 文件,一次一行?

Kri*_*673 8 python read-write writetofile pandas

我有一个大约 100 万个地址的列表,以及一个查找它们的纬度和经度的函数。由于某些记录格式不正确(或出于任何原因),有时该函数无法返回某些地址的纬度和经度。这将导致 for 循环中断。因此,对于成功检索到纬度和经度的每个地址,我想将其写入输出 CSV 文件。或者,也许不是逐行写入,以小块大小写入也可以。为此,我df.to_csv在“追加”模式 ( mode='a') 中使用,如下所示:

for i in range(len(df)):
    place = df['ADDRESS'][i]
    try:
        lat, lon, res = gmaps_geoencoder(place)
    except:
        pass

    df['Lat'][i] = lat
    df['Lon'][i] = lon
    df['Result'][i] = res

    df.to_csv(output_csv_file,
          index=False,
          header=False,
          mode='a', #append data to csv file
          chunksize=chunksize) #size of data to append for each loop
Run Code Online (Sandbox Code Playgroud)

但问题在于,它正在为每个附加打印整个数据帧。因此,对于n行,它将写入整个数据帧n^2时间。如何解决这个问题?

Rob*_*ena 6

如果你真的想逐行打印。(你不应该)。

for i in range(len(df)):
    df.loc[[i]].to_csv(output_csv_file,
        index=False,
        header=False,
        mode='a')
Run Code Online (Sandbox Code Playgroud)

  • 但是正如我在问题中所解释的,如果有任何问题,任何问题,由于代码中断,那么直到那时花费的整个时间基本上都被浪费了(对于一百万条记录,处理整个数据集需要6天时间)。我只想分块或逐行打印以避免这种情况。 (6认同)