如何格式化这样的数据?

问题描述:

注意:这个问题与使用Python(Python)的Spark相关,而不仅仅是普通的Python。它使用RDD对象而不仅仅是简单的Python列表。如何格式化这样的数据?

所以,我有一个演员和他们的铸造电影列表。我想创建关键值对,其中关键是演员,值是他工作的电影。数据格式是这样的,你有一个演员选项卡与他工作的电影分开。例如,如果他在更多电影中工作,例如Abalov Eduard,则额外的电影将在其下面的行中列出。我已经以如下所示的格式从文件中提取数据。但是,我希望演员姓名能够反映他所有工作的电影,以便我可以调用映射函数来创建键值对。例如,对于阿巴洛夫爱德华,我希望他的名字出现在他所有的电影中。例如,而不是

[u'', u'', u'', u'Severnaya rapsodiya (1974)'] 

我想

[u'Abalov, Eduard', u'Severnaya rapsodiya (1974)'] 

我怎么能这样做?我需要使用mappartitions吗?或者有更简单的方法来实现这一点?

[ 
[u'Abalos, Rogelio', u'', u'Sa pagitan ng dalawang mata (1963) <22>'], 
[u''], 
[u'Abalos, Ronald A.', u'Alchemy (2013) [Group Member] <21>'], 
[u''], 
[u'Abalos, Tarzan', u'', u'Bagong buwan (2001) [MILF Group] <82>'], 
[u''], 
[u'Abalov, Eduard', u'', u'Chistye prudy (1965) (as E. Abalov)'], 
[u'', u'', u'', u'Novye priklyucheniya neulovimykh (1968) (as E. Abalov)'], 
[u'', u'', u'', u'Severnaya rapsodiya (1974)'], 
[u'', u'', u'', u'Stoyanka poyezda - 2 minuty (1972) (TV)'], 
[u'', u'', u'', u'Stryapukha (1965) (as E. Abalov)'], 
[u'', u'', u'', u'"12 stulev" (1977) (as E. Abalov)'], 
[u''], 
[u'Abalyan, I.', u'', u'Ne delayte biskvity v plokhom nastroenii (2003)'] 
] 
+1

只要保持一个额外的变量,看到的最后演员的名字。如果新列表中没有演员,请添加它。您可以更新您的现有列表,或者在建立您的字典时进行。 – tdelaney 2014-11-04 17:43:50

+0

我使用Pyspark的火花,而不是普通的蟒蛇。我正在研究RDD对象,而不是普通列表。 – MetallicPriest 2014-11-04 17:53:27

actordata = [[u'.....' ]] 
clean_data = [] 
last_actor = None 
for item in actordata: 
    if len(item) < 1: # ignore the [u''] 
     continue 
    last_actor = item[0] if item[0] != u'' else last_actor 
    clean_data.append([last_actor, item[-1]]) 
+0

在简单的Python中,这将工作,但我使用Spark(Pyspark)。 – MetallicPriest 2014-11-04 17:54:25