pyspark - 如何从pyspark的数据框中删除空列
问题描述
我们有一个数据框:
names = spark.read.csv("name.csv", header="true", inferSchema="true").rdd
我想做这个:
res=names.filter(lambda f: f['Name'] == "Diwakar").map(lambda name: (name['Name'], name['Age']))
res.toDF(['Name','Age']).write.csv("final", mode="overwrite", header="true")
但空列正在造成问题。
解决方案
只需使用一个简单的选择,我假设空列是“”。
用于输入
df = sqlContext.createDataFrame([(1,"", "x"," "), (2,"", "b"," "), (5,"", "c"," "), (8,"", "d"," ")], ("st"," ", "ani"," "))
+---+---+---+---+
| st| |ani| |
+---+---+---+---+
| 1| | x| |
| 2| | b| |
| 5| | c| |
| 8| | d| |
+---+---+---+---+
a=list(set(df.columns))
a.remove(" ")
df=df.select(a)
df.show()
+---+---+
|ani| st|
+---+---+
| x| 1|
| b| 2|
| c| 5|
| d| 8|
+---+---+
"""
Do your Operations
"""
完成上述步骤后,继续您的任务。这将删除空白列
新编辑:
阅读时没有这种方法可以删除空列,您必须自己做。
你可以这样做:
a = list(set(df.columns))
new_col = [x for x in a if not x.startswith("col")] #or what ever they start with
df=df.select(new_col)
推荐阅读
- logging - 机器人框架中“按标签统计”下的关键字标签
- python - 如何添加额外的 x 轴但具有不同的比例和颜色(matplotlib)
- nuget - NuGet 包解压到 net47 文件夹而不是 net48
- python - 用python完成URL,只需要一个数字
- ruby-on-rails - getaddrinfo:ai_socktype (SocketError) 不支持 Servname - Rails Ubuntu
- android - 您可以通过 Google 登录使用某人的 Google Play 帐户进行 Firebase 身份验证吗?
- javascript - 如何使用 onClick 在 React 中切换两个组件
- google-api - 是否可以为员工更新 gmail 中的外出消息和日历中的外出状态?
- python - 无法在 Python 上使用 PIP 安装 GDAL
- node.js - 从 cookie 中获取令牌后,授权中间件永远不会执行。为什么?代码如下