如何将熊猫数据框转换为具有混合数据类型的考拉

问题描述

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

kdf = ks.DataFrame(pdf)

这将导致错误消息“需要一个整数(整数类型为str)”

我尝试添加str的dtype以强制将考拉数据框的类型设置为字符串。 ..

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

在使用databricks扩展的vs代码添加dtype效果很好,但是在Azure Databricks工作区中执行时会导致 AssertionError

似乎天蓝色的数据砖必须使用与vs代码数据砖扩展不同的版本的考拉。

我如何才能在天蓝色数据砖中使用它?

如何找出使用哪种版本的无尾熊天蓝色数据砖以及使用哪种版本的无尾熊vs代码扩展?

我不能只使用 pip list 查找无尾熊的vs代码版本,因为它是扩展,而不是已安装的软件包。

在此方面将得到任何帮助

劳拉

解决方法

您可以通过打印Storage Engine来查找任何导入库的版本。

例如Databricks笔记本中的module.__version__将打印类似print(ks.__version__)的内容。

关于真正的问题:很长一段时间以来,Pandas都没有为字符串指定特定的dtype,它们只是对象。字符串dtype是最近添加的(我认为Pandas 1.0+)。问题是双重的:

  1. Koalas似乎还不了解此字符串dtype。正如您提到的,您不能在构造函数中传递混合dtypes。因此,您应该将字符串列转换回对象。
  2. 如果不指定dtype,Koalas将尝试变得更聪明并为对象列推断dtype。有时会失败,例如如果该列全为空。

因此,我们遇到了令人毛骨悚然的情况,我们知道列dtype,但是无法向Koalas指定应使用的dtype。解决方法是用一个空字符串填充空值,以便对dtypes进行推断:

1.0.1