我有一个解析的数据框“ 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不再是我可以操纵的数据框?
我尝试使用.toDF()代替.show()并获得
u"requirement failed: The number of columns doesn't
match.\nOld column names (4): _c0, _c1, value, time\nNew
column names (0):
然后.collect()返回行。
我只想返回另一个数据框。
答案 0 :(得分:0)
您正在创建 df2 数据框时执行 .show()操作,这就是df2
不再是数据框的原因。
无需执行.show()
操作即可创建df2数据框:
>>> 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))
现在在df2数据帧上执行.show()
:
>>> df2.show()