0

我正在使用 Azure Databricks 将熊猫数据框转换为考拉数据框...

kdf = ks.DataFrame(pdf)

这会导致错误消息“需要整数(获取类型 str)”

我尝试添加一个 dtype 的 str 来强制 koalas 数据帧为字符串类型。..

 df = ks.DataFrame(pdf, dtype='str')

添加 dtype 在使用 databricks 扩展的 vs 代码中完美工作,但在 azure databricks 工作区中执行时会导致AssertionError 。

似乎 azure databricks 必须使用与 vs code databricks 扩展不同版本的考拉。

我怎样才能让它在 azure databricks 中工作?

如何找出 koalas azure databricks 使用的版本以及 databricks 与代码扩展使用的 koalas 版本?

我不能只使用pip list来查找 koalas 的 vs code 版本,因为它是扩展,而不是已安装的包。

对此的任何帮助将不胜感激

劳拉

4

1 回答 1

0

您可以通过打印找到任何导入库的版本module.__version__

例如print(ks.__version__),在 Databricks 笔记本中将打印类似1.0.1.

至于真正的问题:长期以来,Pandas 没有特定的字符串 dtype,它们只是对象。最近添加了字符串 dtype(我认为是 Pandas 1.0+)。问题是双重的:

  1. Koalas 似乎还不理解这个字符串 dtype。正如您所提到的,您不能在构造函数中传入混合 dtypes。因此,您应该将字符串列转换回对象。
  2. 如果您不指定 dtypes,考拉将尝试智能并推断对象列的 dtype。这有时会失败,例如,如果该列全部为空。

所以我们遇到了这种令人愤怒的情况,我们知道列的 dtype,但无法向 Koalas 指定它应该使用什么 dtype。解决方法是用空字符串填充空值,以便 dtypes 的推断将起作用:

for stringcol in df.select_dtypes('string').columns:
  df[stringcol] = df[stringcol].fillna("").astype("object")

ks.DataFrame(df)
于 2020-09-23T12:05:11.987 回答