Python 为什么在比较RDDpipeline的int值时,会同时得到int和none值?
我有一个csv文件,其中包含值为Python 为什么在比较RDDpipeline的int值时,会同时得到int和none值?,python,apache-spark,rdd,nonetype,Python,Apache Spark,Rdd,Nonetype,我有一个csv文件,其中包含值为1和0的字段。使用pyspark,我只想捕获特定字段中带有1的值。当我转换字段时,我将它们转换为int。当我使用if语句检查值是否为1时,它会返回大量None和一些1。为什么我会有这个问题?我100%确定我的csv文件只包含值1和0 def vehA(line): fields = line.split(",") ddsA = int(fields[28]) ddsB = int(fields[52]) if ddsA == 1:
1
和0
的字段。使用pyspark,我只想捕获特定字段中带有1
的值。当我转换字段时,我将它们转换为int
。当我使用if
语句检查值是否为1
时,它会返回大量None
和一些1
。为什么我会有这个问题?我100%确定我的csv文件只包含值1
和0
def vehA(line):
fields = line.split(",")
ddsA = int(fields[28])
ddsB = int(fields[52])
if ddsA == 1:
return ddsA
rdd = lines.map(vehA)
rdd.collect()
输出:
1
1
1
1
1
1
1
None
None
None
None
1
1
1
1
1
1
None
None
...
我甚至尝试过这个,但仍然得到相同的输出:
if ddsA is not None:
if ddsA == 1 and ddsA is not None:
return ddsA
当
ddsA
不等于1
时,您的方法vehA
返回None
,因为在else
的情况下,python隐式返回None
为了仅捕获带有一个的
ddsA
,您可以使用过滤器而不是映射 当ddsA
不等于1
时,您的方法vehA
返回None
,因为在else
的情况下,python隐式返回None
为了仅捕获带有一个的ddsA
,您可以使用过滤器而不是映射