无法解析modin数据框中的json字符串列(在pandas中有效)

时间:2019-05-12 06:30:07

标签: python pandas modin

我有一个要转换为json对象的json字符串数据框。 df.col.apply(json.loads)在熊猫上工作正常,但在使用modin数据帧时失败。

示例:

import pandas
import modin.pandas
import json

pandas.DataFrame.from_dict({'a': ['{}']}).a.apply(json.loads)

0    {}
Name: a, dtype: object


modin.pandas.DataFrame.from_dict({'a': ['{}']}).a.apply(json.loads)

TypeError: the JSON object must be str, bytes or bytearray, not float

1 个答案:

答案 0 :(得分:1)

此问题也在GitHub上提出,并在此处得到解答:https://github.com/modin-project/modin/issues/616

  

错误来自运行时的错误检查组件,我们在空的DataFrame上调用apply(或agg)以确定返回类型,并让熊猫处理错误检查(Link)。 / p>      

在本地,我可以重现此问题,并通过更改行以在Series的一行上执行操作来解决此问题。这可能会影响性能,因此我需要做一些更多的调整,以查看是否有一种方法可以加快它的速度,并且仍然很健壮。修复后,该检查的开销约为256列,约为10ms,我认为我们不希望错误检查花费那么长的时间。

在发布此修复程序之前,可以使用也适用于空数据的代码来解决此问题,例如:

def safe_loads(x)
  try:
    return json.loads(x)
  except:
    return None

modin.pandas.DataFrame.from_dict({'a': ['{}']}).a.apply(safe_loads)