在熊猫的两个单独的列中返回第一个值,然后返回所有其他值

时间:2019-07-30 20:16:17

标签: python pandas

我想从协调器名称列表中找到第一个或主要协调器。但是,我还需要保存列出的所有其他协调员。如您所料,协调器名称列表重复:

      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

对于此特定错误或任何其他方法的帮助,我将不胜感激。

2 个答案:

答案 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