Pandas.Series.mode 最终得到多行结果。如何解决?
Pandas.Series.mode eventually have multirow results. How to fix it?
我有这个 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
之间有平局,所以 returns 三个不同的行。我得到这个结果:
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
有办法吗?
我们应该先做mode
然后join
结果
df.groupby(['nome_socio','cnpj_cpf_socio'])['cidade_pred'].agg(lambda x : ','.join(x.mode().tolist()))
我有这个 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
之间有平局,所以 returns 三个不同的行。我得到这个结果:
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
有办法吗?
我们应该先做mode
然后join
结果
df.groupby(['nome_socio','cnpj_cpf_socio'])['cidade_pred'].agg(lambda x : ','.join(x.mode().tolist()))