Eu tenho um quadro de dados como este:
A B C
0 1 0.749065 This
1 2 0.301084 is
2 3 0.463468 a
3 4 0.643961 random
4 1 0.866521 string
5 2 0.120737 !
Chamando
In [10]: print df.groupby("A")["B"].sum()
retornará
A
1 1.615586
2 0.421821
3 0.463468
4 0.643961
Agora eu gostaria de fazer "o mesmo" para a coluna "C". Como essa coluna contém cadeias, sum () não funciona (embora você possa pensar que concatenaria as cadeias). O que eu realmente gostaria de ver é uma lista ou conjunto de strings para cada grupo, ou seja,
A
1 {This, string}
2 {is, !}
3 {a}
4 {random}
Eu tenho tentado encontrar maneiras de fazer isso.
Series.unique () ( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.unique.html ) não funciona, embora
df.groupby("A")["B"]
é um
pandas.core.groupby.SeriesGroupBy object
então eu esperava que qualquer método da série funcionasse. Alguma ideia?
apply
elambda
s. Eu vim aqui me perguntando por quepandas
realmente concats e não retornar um erro ao somar seqüências de caracteres.Você pode usar o
apply
método para aplicar uma função arbitrária aos dados agrupados. Então, se você quer um conjunto, apliqueset
. Se você deseja uma lista, inscreva-selist
.Se você quiser algo mais, basta escrever uma função que faça o que você quer e depois
apply
aquilo.fonte
.reset_index()
.Você pode usar a função
aggregate
(ouagg
) para concatenar os valores. (Código não testado)fonte
Você pode tentar o seguinte:
fonte
uma solução simples seria:
fonte
df.groupby(['A','B']).c.unique().apply(lambda x: ';'.join(x)).reset_index()
Agregações nomeadas com
pandas >= 0.25.0
Desde a versão 0.25.0 do pandas, nomeamos agregações onde podemos agrupar, agregar e ao mesmo tempo atribuir novos nomes às nossas colunas. Dessa forma, não obteremos as colunas MultiIndex, e os nomes das colunas farão mais sentido, considerando os dados que eles contêm:
agregue e obtenha uma lista de strings
agregar e juntar as cordas
fonte
Se você deseja sobrescrever a coluna B no quadro de dados, isso deve funcionar:
fonte
Seguindo a boa resposta de @ Erfan, na maioria das vezes em uma análise de valores agregados, você deseja as combinações possíveis únicas desses valores de caracteres existentes:
fonte