我在Pyspark中读取了一个CSV文件
inputRDD1 = sc.textFile('a.csv')
数据:
a b
1 1
2 3
我想选择列' b'所以我可以像平均值那样对它进行操作。但是如何选择列呢?我查了很多教程都找不到。
请告诉我,
谢谢。
我正在尝试找到列的唯一元素。
我试过了:
newrdd = inputRDD1.map(lambda x: x[[2])
无法选择列' b'
答案 0 :(得分:1)
您好在Python中选择RDD中的特定列,请按以下方式执行
from pyspark.conf import SparkConf
from pyspark.context import SparkContext
# creating spark context
conf = SparkConf().setAppName("SelectingColumn").setMaster("local[*]")
spark = SparkContext(conf = conf)
# calling data
raw_data = spark.textFile("C:\\Users...\\SampleCsv.txt", 1)
# custom method to return column b data only
def parse_data(line):
fields = line.split("\t")
# use 0 for column 1, 2 for column 2 and so on
return fields[1]
columnBdata = raw_data.map(parse_data)
print(columnBdata.take(4)) # yields column b data only
输出['b','2','7','12']
答案 1 :(得分:1)
请查看raj的答案,因为它更完整。我提供了我的解决方案,因为初学者可能更容易理解。
sc.textfile
读取整行,因此inputRDD
中只有一列。您需要首先通过分隔字符(空格或制表符)拆分输入行。完成后,您可以选择您之后的相关列
inputRDD1 = sc.parallelize(['a b','1 1','2 3'])
newrdd = inputRDD1 .map(lambda x: x.split( )[1])
newrdd.collect()
给出
['b', '1', '3']