我们有一个https://archive.ics.uci.edu/ml/datasets/Plants的数据集
此数据的格式是用逗号分隔的csv文件。
第一列是植物名称,下一个字符串是具有该植物的状态。
当我们从文件加载数据时,它假设为两列(工厂名称,状态列表)
[Row('plant1',['qc','on']),Row('plant2',['on'])]
直到完成此步骤。通过使用:
1- load data from text file as RDD
2- parts = RDD.map(lambda x: x.value.split(','))
3- data = parts.map(lambda x: Row(x[0],x[1:]))
这可以解决问题,因为文件中的第一个属性是唯一的。
但是下一步是将该列表重新格式化为类似的内容:
(州名,词典) 字典的格式如{plant name:value}(如果工厂处于状态,则value为int = 1,否则为0)
我执行相同的先前步骤来保留工厂名称,然后使用rdd.flatMapValues 步骤:
1- load data from text file as RDD
2- parts = RDD.map(lambda x: x.values.split(','))
3- data = parts.map(lambda x: Row(x[0],x[1:]))
4- data = data.flatMapValues(lambda x:x)
我收到像这种格式的rdd [('plant1','qc'),('plant1','on'),('plant2','on')]
5- I swap the values using
data = data.map(lambda x:(x[1],x[0]))
因此,rdd数据类似于:
[('qc','plant1'),('on','plant1'),('on','plant2')]
现在,我在如何使这种表示方式方面遇到问题:
[('qc',{'plant1':1}),('on',{plant1:1,plant2:1})]
有人可以帮忙吗?