Pyspark withColumn Not Returning Dataframe - PullRequest
       4

Pyspark withColumn Not Returning Dataframe

0 голосов
/ 03 ноября 2018

У меня есть фрейм данных 'df', который я анализирую.

    from pyspark.sql.functions import regexp_extract, trim, lit 

    df2 = df.withColumn("value", regexp_extract("_c0", "(? 
    <=value':\s)\d+", 0))\
    .withColumn("time", regexp_extract("_c1", "(? 
    <=time':\su')\d\d:\d\d:\d\d(?=('}))", 0))\
    .show(truncate=False)

Возвращает

    +-------------+----------------------+-----+--------+
    |_c0          |_c1                   |value|time    |
    +-------------+----------------------+-----+--------+
    |{u'value': 76| u'time': u'00:36:32'}|76   |00:36:32|
    |{u'value': 77| u'time': u'00:36:42'}|77   |00:36:42|
    |{u'value': 76| u'time': u'00:36:47'}|76   |00:36:47|
    |{u'value': 77| u'time': u'00:36:57'}|77   |00:36:57|
    |{u'value': 78| u'time': u'00:37:02'}|78   |00:37:02|
    |{u'value': 77| u'time': u'00:37:07'}|77   |00:37:07|

Когда я пытаюсь сделать больше манипуляций с df2, я получаю

    'NoneType' object has no attribute 'show'

Почему df2 больше не является фреймом данных, которым я могу манипулировать?

Вместо .show () я пытаюсь .toDF () и получаю

    u"requirement failed: The number of columns doesn't 
    match.\nOld column names (4): _c0, _c1, value, time\nNew 
    column names (0): 

И .collect () возвращает строки.
Я просто хочу вернуть еще один фрейм данных.

1 Ответ

0 голосов
/ 03 ноября 2018

Вы выполняете действие .show () при создании df2 dataframe, вот почему df2 больше не является фреймом данных.

Создание кадра данных df2 без действия .show():

>>> df2 = df.withColumn("value", regexp_extract("_c0", "(? 
    <=value':\s)\d+", 0))\
    .withColumn("time", regexp_extract("_c1", "(? 
    <=time':\su')\d\d:\d\d:\d\d(?=('}))", 0))

Теперь выполните .show() на фрейме данных df2:

>>> df2.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...