【问题标题】:Ignoring KeyError while writing to file with dask.to_csv使用 dask.to_csv 写入文件时忽略 KeyError
【发布时间】:2020-12-14 15:46:21
【问题描述】:

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

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,则停止写入文件 - 即使我在那个阶段遇到异常,有没有办法让写入继续?

【问题讨论】:

    标签: python dataframe dask keyerror


    【解决方案1】:

    如果您想跳过或修复失败的行但继续编写,最好的做法是将您的 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 结合使用。

    【讨论】:

    • 有没有办法将df 作为参数传递给alias
    • 不在这个公式中,不。逐行操作与需要整个数据的操作非常不同。
    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 2021-07-19
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多