我有熊猫数据框,其中包含值或值列表(不等长度)的列。我想“展开”行,因此列表中的每个值都成为列中的单个值。一个例子说明了一切:遍历行并扩展熊猫数据帧
dfIn = pd.DataFrame({u'name': ['Tom', 'Jim', 'Claus'],
u'location': ['Amsterdam', ['Berlin','Paris'], ['Antwerp','Barcelona','Pisa'] ]})
location name
0 Amsterdam Tom
1 [Berlin, Paris] Jim
2 [Antwerp, Barcelona, Pisa] Claus
我想变成:
dfOut = pd.DataFrame({u'name': ['Tom', 'Jim', 'Jim', 'Claus','Claus','Claus'],
u'location': ['Amsterdam', 'Berlin','Paris', 'Antwerp','Barcelona','Pisa']})
location name
0 Amsterdam Tom
1 Berlin Jim
2 Paris Jim
3 Antwerp Claus
4 Barcelona Claus
5 Pisa Claus
我第一次使用应用尝试,但它不可能为据我所知返回多个系列。看起来好像是诡计。但是,下面的代码给我一个空数据框...
def duplicator(series):
if type(series['location']) == list:
for location in series['location']:
subSeries = series
subSeries['location'] = location
dfOut.append(subSeries)
else:
dfOut.append(series)
for index, row in dfIn.iterrows():
duplicator(row)
我得到一个错误,可能是因为奇怪的数据(这可能是由某些列表中的emtpy值引起的):InvalidIndexError:Reindexing只对有唯一值的索引对象有效 – bowlby 2014-09-27 09:45:21
如果您的位置列表之一包含重复项目。您如何处理重复地点(针对同一个人)? – unutbu 2014-09-27 09:48:26
重复值应该是'合并'(例如,只有1个应该保留在结果中),空值应该被忽略。 – bowlby 2014-09-27 11:24:30