как группировать и создать список строк - PullRequest
2 голосов
/ 24 апреля 2020

У меня есть:

df=pd.DataFrame({'a':[1,1,2],'b':[[1,2,3],[2,5],[3]],'c':['f','df','ere']})
df
    a   b           c
0   1   [1, 2, 3]   f
1   1   [2, 5]      df
2   2   [3]         ere

Я хочу объединить и создать список для каждого элемента:

pd.DataFrame({'a':[1,2],'b':[[1,2,3,2,5],[3]],'c':[['f', 'df'],['ere']]})
    a   b               c
0   1   [1, 2, 3, 2, 5] [f, df]
1   2   [3]             [ere]

Я пытался:

df.groupby('a').agg({'b': 'sum', 'c': lambda x: list(''.join(x))})

a   b               c
1   [1, 2, 3, 2, 5] [f, d, f]
2   [3]             [e, r, e]

Но это не совсем верно.

Есть предложения?

1 Ответ

5 голосов
/ 24 апреля 2020

Вы почти правильно поняли:

df.groupby('a', as_index=False).agg({
    'b': 'sum',
    'c': list    # no join needed
})

Вывод:

   a                b        c
0  1  [1, 2, 3, 2, 5]  [f, df]
1  2              [3]    [ere]
...