property_duplicate_map = {}
for index, row in df.iterrows():
property_value = row[property]
name = row['name']
if name in property_duplicate_map:
new_value = property_value + '|' + property_duplicate_map[name]
property_duplicate_map[name] = new_value
df = df.drop([index])
else:
property_duplicate_map[name] = property_value
df.loc[index, property] = property_duplicate_map[name]
我的数据框可能有如下重复项:
Name Type Alias
aa b m
aa b n
我上面的代码应该将两行合并为一行,如下所示:
aa b m|n
问题似乎出在df.drop(index)。例如,如果它删除了'aa b m'的行索引'12',则该行将消失,并且以下df.loc [index,property] = ...不起作用。
应该有一种方法可以做到这一点。如何解决?
In [923]: df
Out[923]:
Name Type Alias
0 aa b m
1 aa b n
In [924]: df.groupby(['Name','Type'])['Alias'].apply('|'.join)
Out[924]:
Name Type
aa b m|n
Name: Alias, dtype: object