如何从pyspark的dataframe中删除空列
我们有一个数据帧:如何从pyspark的dataframe中删除空列,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我们有一个数据帧: 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",
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")
但空列造成了问题。如果要删除pyspark数据框中的空行数据,请执行以下操作:
newDF=oldDF.filter(“colName!=”)
在您的情况下,您可以过滤初始的名称
数据框并应用您的条件:
res=names.filter("Name != ''") # I have applied filter on 'Name' column of your data.
我希望这就是您想要的。只需使用一个简单的选择,
我假设空列是“”
输入
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)
如果在使用read.csv时创建数据框,则spark将自动为未命名列指定默认名称,并且必须显式删除该列的名称。但它会引发以下错误:
CSV header does not conform to the schema.
Header: Name, , Age, , Class,
Schema: Name, 1, Age, 3, Class, _c5
现在你可以继续你的工作了。数据在哪里?@abhishekhmishra现在,我已经添加了csv文件的链接为什么
lambda
?哦,请再看一次数据,数据有没有名字的空列。我想知道如何删除空列。这就是代码的作用。。我还添加了一个示例,它确实删除了自建数据框的空列…..但是如果我们将使用read.csv创建数据框,则默认名称将指定给空列名称…..我们可以克服此错误吗?有没有办法将csv文件保持原样?我们可以停止spark将默认名称添加到列中吗?请再次查看数据,数据中有空列,但没有名称。我想知道如何删除空列。@ishwar,你能解决它吗,如何解决?有没有办法使csv文件保持原样。。。。我们能不能停止spark在列中添加默认名称。。。。我也在寻找同样的答案……但到目前为止,我还没有这个问题的答案。。。。。
CSV header does not conform to the schema.
Header: Name, , Age, , Class,
Schema: Name, 1, Age, 3, Class, _c5