为什么dropna()不起作用?

杰森

系统:Cloudera Quickstart VM 5.4上的Spark 1.3.0(Anaconda Python dist。)

这是一个Spark DataFrame:

from pyspark.sql import SQLContext
from pyspark.sql.types import *
sqlContext = SQLContext(sc)

data = sc.parallelize([('Foo',41,'US',3),
                       ('Foo',39,'UK',1),
                       ('Bar',57,'CA',2),
                       ('Bar',72,'CA',3),
                       ('Baz',22,'US',6),
                       (None,75,None,7)])

schema = StructType([StructField('Name', StringType(), True),
                     StructField('Age', IntegerType(), True),
                     StructField('Country', StringType(), True),
                     StructField('Score', IntegerType(), True)])

df = sqlContext.createDataFrame(data,schema)

data.show()

Name Age Country Score
Foo  41  US      3    
Foo  39  UK      1    
Bar  57  CA      2    
Bar  72  CA      3    
Baz  22  US      6    
null 75  null    7 

但是这些都不起作用!

df.dropna()
df.na.drop()

我收到此消息:

>>> df.show()
Name Age Country Score
Foo  41  US      3    
Foo  39  UK      1    
Bar  57  CA      2    
Bar  72  CA      3    
Baz  22  US      6    
null 75  null    7    
>>> df.dropna().show()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/spark/python/pyspark/sql/dataframe.py", line 580, in __getattr__
    jc = self._jdf.apply(name)
  File "/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__
  File "/usr/lib/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o50.apply.
: org.apache.spark.sql.AnalysisException: Cannot resolve column name "dropna" among (Name, Age, Country, Score);
    at org.apache.spark.sql.DataFrame$$anonfun$resolve$1.apply(DataFrame.scala:162)
    at org.apache.spark.sql.DataFrame$$anonfun$resolve$1.apply(DataFrame.scala:162)
    at scala.Option.getOrElse(Option.scala:120)
    at org.apache.spark.sql.DataFrame.resolve(DataFrame.scala:161)
    at org.apache.spark.sql.DataFrame.col(DataFrame.scala:436)
    at org.apache.spark.sql.DataFrame.apply(DataFrame.scala:426)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379)
    at py4j.Gateway.invoke(Gateway.java:259)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:207)
    at java.lang.Thread.run(Thread.java:745)

有人遇到过这个问题吗?解决方法是什么?Pyspark似乎正在寻找名为“ na”的列。任何帮助,将不胜感激!

js

tl; dr方法nadropna仅从Spark 1.3.1起可用。

您犯了一些错误:

  1. data = sc.parallelize([....('',75,'', 7 )]),您打算用来''表示None,但是它只是一个String而不是null

  2. na并且dropna都是dataFrame类的两个方法,因此,您应该使用来调用它df

可运行代码:

data = sc.parallelize([('Foo',41,'US',3),
                       ('Foo',39,'UK',1),
                       ('Bar',57,'CA',2),
                       ('Bar',72,'CA',3),
                       ('Baz',22,'US',6),
                       (None, 75, None, 7)])

schema = StructType([StructField('Name', StringType(), True),
                 StructField('Age', IntegerType(), True),
                 StructField('Country', StringType(), True),
                 StructField('Score', IntegerType(), True)])

df = sqlContext.createDataFrame(data,schema)

df.dropna().show()
df.na.drop().show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不起作用?

来自分类Dev

graphlab 创建 dropna 不起作用

来自分类Dev

为什么保护范围不起作用?

来自分类Dev

为什么ASLR似乎不起作用

来自分类Dev

为什么框阴影不起作用?

来自分类Dev

为什么设置barItems不起作用?

来自分类Dev

OFS为什么不起作用?

来自分类Dev

为什么我的printf不起作用?

来自分类Dev

为什么我的列表不起作用?

来自分类Dev

为什么自动换行不起作用?

来自分类Dev

为什么ResetPasswordAsync不起作用?

来自分类Dev

为什么我的for循环不起作用?

来自分类Dev

为什么此NotificationListenerService不起作用

来自分类Dev

为什么Rangeslider不起作用?

来自分类Dev

$ {#$ 2}为什么不起作用?

来自分类Dev

为什么我的代码不起作用?

来自分类Dev

为什么dropwizard配置不起作用?

来自分类Dev

为什么将来的示例不起作用?

来自分类Dev

为什么COALESCE()不起作用?

来自分类Dev

为什么getchar()对我不起作用?

来自分类Dev

为什么.rstrip('\ n')不起作用?

来自分类Dev

tcflush为什么对scanf不起作用?

来自分类Dev

为什么FadeIn不起作用?

来自分类Dev

为什么capistrano multiconfig不起作用?

来自分类Dev

为什么同步不起作用?

来自分类Dev

为什么我的排序不起作用?

来自分类Dev

为什么EOF不起作用?

来自分类Dev

为什么这个for()循环不起作用?

来自分类Dev

为什么源地图不起作用?