Pandas 如何在dataframe中合并列值?
我的数据帧可能有如下重复项:Pandas 如何在dataframe中合并列值?,pandas,dataframe,Pandas,Dataframe,我的数据帧可能有如下重复项: 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_d
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
问题似乎在于df.drop(索引)。例如,如果它删除“aa b m”的行索引“12”,则该行将消失,并且以下df.loc[index,property]=。。。不起作用
应该有办法做到这一点。如何修复它?您只需执行以下操作:
aa b m|n
理想情况下,我不应该显式使用列名['name','Type'],因为不同的dataframe的列计数可能不同。只有“名称”和“别名”列是已知的。
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