我想从协调器名称列表中找到第一个或主要协调器。但是,我还需要保存列出的所有其他协调员。如您所料,协调器名称列表重复:
Tags Name
0 333000 Lala
1 333000 Dipsy
2 333000 Poe
3 111111 Tinky Winky
因此,在我自己的数据框中,我想返回:
Tags Primary Others
0 333000 Lala Dipsy, Poe
1 111111 Tinky Winky NaN
虽然我可以使用以下代码返回Primary罚款:
df['Primary'] = df.join(coordinator_df.groupby(['Tags']).nth(0)['Name'], on='Tags)['Name']
我对他人的尝试返回错误:
df['Primary'] = df.join(coordinator_df.groupby(['Tags']).nth([0, 1, 2])['Name'], on='Tags)['Name']
错误:
ValueError: cannot reindex from a duplicate axis
对于此特定错误或任何其他方法的帮助,我将不胜感激。
答案 0 :(得分:4)
尝试一下:
def Others(x):
return ', '.join(x.iloc[1:])
df.groupby('Tags')['Name'].agg({'first', Others})
输出:
Others first
Tags
111111 Tinky Winky
333000 Dipsy, Poe Lala
您有一个空字符串,而不是NaN
。
答案 1 :(得分:1)
我将在分组后尝试将所有值存储在列表中,然后将列表列拆分为2个新变量。
@autoinject