我该如何格式化这样的数据?

时间:2014-11-04 16:35:19

标签: python bigdata apache-spark

注意:这个问题与Spark使用Python(Python)有关,而不仅仅是普通的Python。它使用RDD对象,而不仅仅是简单的Python列表。

所以,我有一个演员名单和他们的演员电影。我想创建键值对,其中key是actor,值是他工作的电影。数据格式使得您有一个actor标签与他工作的电影分开。如果他在更多的电影中工作,例如,在 Abalov Eduard 的情况下,额外的电影列在它下面的行中。我已经以下面显示的格式从文件中提取了数据。但是,我希望演员名称能够出现在他工作的所有电影中,这样我就可以调用一个map函数来创建键值对。因此,例如,对于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 个答案:

答案 0 :(得分:0)

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