【问题标题】:PySpark RDD: mapping strings to integers, removing invalid dataPySpark RDD:将字符串映射到整数,删除无效数据
【发布时间】:2020-12-16 22:50:43
【问题描述】:

我在 PySpark 中有一个名为 animalRDD 的 RDD,并且标头已被删除。标头标题为:animal, animalBreed, nickName, numberLegs

animalRDD如下:

[('Dog', 'Poodle', 'Rex', '4'), ('Cat', 'Tabby', 'Digger', 'XXX'), ('Horse', 'Stallion', 'Ozzie', ' '), ('Chicken', 'Rooster', 'Diesel', '2'), ('Bear', 'Black Bear', 'Bazza', '4')]

现在 RDD 中的每个元素都是一个字符串。我想映射 RDD,使腿数变为整数。

我知道我可以使用以下转换为整数:

animalRDD.map(lambda x: (x[0], x[1], x[2], int(x[3])))

但是,数据中有字符串“XXX”和“”(空白)。有没有办法去掉这两个无效点,让返回的RDD是这样的?

[('Dog', 'Poodle', 'Rex', 4),('Chicken', 'Rooster', 'Diesel', 2), ('Bear', 'Black Bear', 'Bazza', 4)]

谢谢!

【问题讨论】:

  • 也许是这个:animalRDD.filter(lambda x: x[3].strip().isdigit()).map(...)

标签: python apache-spark pyspark mapping rdd


【解决方案1】:

如果您不希望在输出中删除 'XXX' 和 '',可以使用以下方法:

tup = [('Dog', 'Poodle', 'Rex', '4'), ('Cat', 'Tabby', 'Digger', 'XXX'), ('Horse', 'Stallion', 'Ozzie', ' '), ('Chicken', 'Rooster', 'Diesel', '2'), ('Bear', 'Black Bear', 'Bazza', '4')]

lst = [list(i) for i in tup]
for i in range(len(lst)):
    try:
        lst[i][3]=int(lst[i][3])
    except ValueError:
        lst[i] = lst[i]

如果您确实希望将它们从列表中完全删除:

tup = [('Dog', 'Poodle', 'Rex', '4'), ('Cat', 'Tabby', 'Digger', 'XXX'), ('Horse', 'Stallion', 'Ozzie', ' '), ('Chicken', 'Rooster', 'Diesel', '2'), ('Bear', 'Black Bear', 'Bazza', '4')]



lst = [list(i) for i in tup]
for i in range(len(lst)):
    try:
        lst[i][3]=int(lst[i][3])
    except ValueError:
        del lst[i][3]

然后再转回元组:

tup = [tuple(i) for i in lst]

【讨论】:

    【解决方案2】:

    这是过滤和映射的方法。

    rdd.filter(lambda x: x[3].isdigit()).map(lambda x: (x[0], x[1], x[2], int(x[3]))).collect()
    
    [('Dog', 'Poodle', 'Rex', 4),
     ('Chicken', 'Rooster', 'Diesel', 2),
     ('Bear', 'Black Bear', 'Bazza', 4)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多