Pyspark,找到一列的所有数据类型

2024-06-14 12:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一些数据清理和数据分析工作。所以给定的数据可能会非常混乱。你知道吗

我想使用pyspark获取列的所有潜在数据类型。 数据类型如下:

  1. 整数
  2. 实数
  3. 日期/时间
  4. 字符串(文本)
  5. 等等

我需要做更多的处理来根据列的类型生成相应的元数据。你知道吗

一个列可以包含多个类型。我不是说内置的数据类型。给定的数据都是string类型,但有些是"1234"形式,实际上是int,有些是"2019/11/19",实际上是date。你知道吗

例如,列number可以包含如下值

  • "123"
  • "123.456"
  • "123,456.789"
  • "NUMBER 123"

在上面的示例中,数据类型将是INTEGER, REAL NUMBER, STRING。你知道吗

如果我使用df.schema[col].dataType,它只会给我StringType。你知道吗

我在想我可以遍历整个列,并使用regex来查看行属于哪种类型,但是我很好奇是否有更好的方法来完成它,因为它是一个相对较大的数据集。你知道吗


现在我通过遍历列来解决这个问题,并进行一些类型检查:

  • df = spark.sql('SELECT col as _col FROM table GROUP BY _col')
  • df.rdd.map(lambda s: typeChecker(s))

在typeChecker中,我只检查s._col属于哪种类型。你知道吗

谢谢。你知道吗


Tags: 数据字符串文本类型numberdfstring时间