【发布时间】:2020-09-18 10:09:56
【问题描述】:
我有这个 df:
nome_socio cnpj_cpf_socio municipio
Alexandre AAA Curitiba
Alexandre AAA Rio
Alexandre AAA Porto Alegre
Bruno BBB Porto Alegre
Bruno BBB Porto Alegre
我想获得具有相同nome_socio 和cnpj_cpf_socio 的行的模式。为此,我使用以下代码:
moda_municipio=df[['nome_socio','cnpj_cpf_socio','municipio']].groupby(['nome_socio','cnpj_cpf_socio'])['municipio'].apply(pd.Series.mode).to_frame().reset_index().rename(columns={'municipio':"cidade_pred"})
它确实找到了模式,但是因为对于 Alexandre + AAA 行,三个 municipios 之间存在平局,它返回三个不同的行。我得到了这个结果:
nome_socio cnpj_cpf_socio level_2 cidade_pred
0 Alexandre AAA 0 Curitiba
1 Alexandre AAA 1 Porto Alegre
2 Alexandre AAA 2 Rio
3 Bruno BBB 0 Porto Alegre
我需要让它看起来像这样:
nome_socio cnpj_cpf_socio level_2 cidade_pred
Alexandre AAA 0 Curitiba, Porto Alegre, Rio
Bruno BBB 0 Porto Alegre
有办法吗?
【问题讨论】:
-
检查my answer(ctrl+F“多种模式”)。解决方法是将
.apply(pd.Series.mode)改为.agg(pd.Series.mode)。 -
@cs95 谢谢你,你的回答确实很实用。我注意到您要求结束该问题,但是即使您在其他问题中的回答涵盖了该问题,但问题却完全不同。关闭它的缺点是你会阻止人们在谷歌搜索时遇到同样的问题,他们永远找不到。
-
你刚才所说的听起来更像是一个论点 for 欺骗,IMO。您慷慨地确认我的回答包含解决您的问题所需的上下文。通过将您的 Q 标记为重复帖子,希望其他人来回答您的问题会找到指向规范帖子的链接,并且每个人都会获胜。 PS,关闭一个问题并不会降低它在谷歌上的搜索率。
标签: pandas pandas-groupby pandas-apply