如何在Python中从RDD中选择特定的列?

2024-09-28 17:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Pyspark中读取了一个CSV文件

inputRDD1 = sc.textFile('a.csv')

数据:

a b
1 1
2 3

我想选择列“b”,这样我就可以像mean等那样对它进行操作,但是如何选择列呢?我查了很多家教找不到。

请告诉我

谢谢你。

我试图找到一个专栏的独特元素。

我试过这个:

newrdd = inputRDD1.map(lambda x: x[[2]) 

无法选择列“b”


Tags: 文件csv数据lambda元素mapmeanpyspark
2条回答

请看拉吉的回答,因为它更完整。我提供了我的解决方案,因为对初学者来说可能更容易理解。

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']

嗨,要从Python中的RDD中选择一个特定的列,请按如下所示操作

样本数据(标签分开)

enter image description here

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']

相关问题 更多 >