我有一个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:
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
答案 0 :(得分:2)
当vehA
不等于None
时,您的方法ddsA
会返回1
,因为在else
python隐式返回{None
时,您没有返回任何内容1}}。
为了仅使用一个捕获ddsA
,您可以使用过滤器而不是地图。