使用 dask.to_csv 写入文件时忽略 KeyError

Ignoring KeyError while writing to file with dask.to_csv

我有一个数据框,它没有加载到内存中(它应该保持这样)。
在脚本中的某个时刻,我通过以下方式将带有字典的转换应用于其中一个数据框列:

df['identifier'] = df.identifier.map(lambda identifier: alias_dict[str(identifier)],
                                                               meta=('identifier', str))

在此阶段未发现 KeyError 异常,但就在我使用 to_csv 时,所以我尝试处理它们

try:
   dd.to_csv(intersection_df, output, header=None, index=None, single_file=True, sep='\t')
except KeyError as err:
   print(f'Unmatched key {err.args[0]}')

万一我遇到 KeyError,写入文件就会停止 - 有没有办法让写入继续,即使我在那个阶段遇到异常?

如果您想跳过或修复失败的行但继续编写,最好的办法是将您的 try/except 放入映射函数

def alias(identifier):
    try:
        return alias_dict[str(identifier)]
    except KeyError:
        return identifier

df['identifier'] = df.identifier.map(alias, meta=('identifier', str))

在这种情况下,失败将被原样传递。您可以将它们变成 None 并在第二步中将它们过滤掉,或者这两个步骤可以与 map_partitions.

结合使用