Как создать новые значения столбцов списка из groupby - PullRequest
0 голосов
/ 14 июля 2020

Моя цель - создать новый столбец c_list, содержащий список после groupby (без функции merge): df['c_list'] = df.groupby('a').agg({'c':lambda x: list(x)})

df = pd.DataFrame(
                  {'a': ['x', 'y', 'y', 'x'],
                   'b': [2, 0, 0, 0],
                   'c': [8, 2, 5, 6]
                  }
                 )
df
Начальный фрейм данных
    a   b   c
0   x   2   8
1   y   0   2
2   y   0   5
3   x   0   6
Ищу:
    a   b   c  d
0   x   2   8  [6, 8]
1   y   0   2  [2, 5]
2   y   0   5  [2, 5]
3   x   0   6  [6, 8]

1 Ответ

2 голосов
/ 14 июля 2020

Попробуйте с transform

df['d']=df.groupby('a').c.transform(lambda x : [x.values.tolist()]*len(x))
0    [8, 6]
1    [2, 5]
2    [2, 5]
3    [8, 6]
Name: c, dtype: object

или

df['d']=df.groupby('a').c.agg(list).reindex(df.a).values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...