dataframe - Pyspark withColumn不返回数据框
问题描述
我有一个我解析的数据框'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() 返回行。
我只想返回另一个数据框。
解决方案
您在创建df2数据框时正在执行.show()操作,这就是不再是数据框的原因。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()
推荐阅读
- c# - 如何在 wpf 应用程序中制作自定义热键并执行各种操作
- jquery - jQuery检查动画左侧是否大于1000px
- javascript - Javascript 闭包编译器
- c++ - 如何快速读取文件以检查签名/幻数?
- python - 如何使用变量来引用 Python SQLite 中的列?
- android-studio - 为什么 Android Studio 不显示小部件的可能属性?
- c# - 反序列化 RSA 公钥和私钥 C#
- node.js - MongoDB 的聚合 $search 没有提取任何结果
- node.js - 尝试使用节点安装 graphql 包
- html - 单选按钮不会检查引导按钮组