python pandas - 如何将ds转换为dataframe

14 浏览
0 Comments

python pandas - 如何将ds转换为dataframe

这个问题已经有了答案:

将Pandas GroupBy的输出从Series转换为DataFrame

通过下面的代码,我得到以下输出。但我需要从中创建一个图表 (ggplot)。 我的理解是我需要将DS转换为DF。

有人能帮助我如何将当前的数据集A转换为如下所示的dataframe B吗?

A) 当前

    ds_perg1_2_merged = df_perg1_2.groupby(['DescricaoProblema'])['strRazaoSocial'].apply(lambda x: x.value_counts().head(3))
    DescricaoProblema                                
    Cobrança indevida.         CAIXA ECONOMICA FEDERAL                 66
                               CAIXA SEGUROS S.A                       45
                               BANCO BMG S.A.                          38
    Cobrança indevida/abusiva  CLARO S/A                               50
                               TIM CELULAR S/A                         47
                               COMPANHIA PIRATININGA DE FORÇA E LUZ    34
    Produto com vício          VIA VAREJO S/A                          46
                               SAMSUNG ELETRONICA DA AMAZONIA LTDA     27
                               WHIRLPOOL S/A                           23
ds_perg1_2_merged.info()
    <class 'pandas.core.series.Series'>
    MultiIndex: 9 entries, ('Cobrança indevida.', 'CAIXA ECONOMICA FEDERAL') to ('Produto com vício', 'ELECTROLUX DO BRASIL S/A')
    Series name: strRazaoSocial
    Non-Null Count  Dtype
    --------------  -----
    9 non-null      int64
    dtypes: int64(1)
    memory usage: 568.0+ bytes

B) 需要的是:

DescricaoProblema          strRazaoSocial                      amount
Cobrança indevida.         CAIXA ECONOMICA FEDERAL                 66
                           CAIXA SEGUROS S.A                       45
                           BANCO BMG S.A.                          38
Cobrança indevida/abusiva  CLARO S/A                               50
                           TIM CELULAR S/A                         47
                           COMPANHIA PIRATININGA DE FORÇA E LUZ    34
Produto com vício          VIA VAREJO S/A                          46
                           SAMSUNG ELETRONICA DA AMAZONIA LTDA     27
                           WHIRLPOOL S/A                           23

编辑:好的,所以我通过 ds_perg1_2_merged.to_frame() 解决了其中一半的问题。 ..但对于值的第三列,我仍然需要一个单独的列名。不确定我是否走在正确的道路上。

\"enter

admin 更改状态以发布 2023年5月24日
0
0 Comments
ds_perg1_2_merged = df_perg1_2.groupby(['DescricaoProblema'], as_index=False)['strRazaoSocial'].apply(lambda x: x.value_counts().head(3))

的中文意思是:加粗字体的承载着数字 123 的段落。

0
0 Comments

当使用更多的列分组DataFrame时,会得到一个MultiIndex。

您可以使用reset_index方法(请参见文档)将MultiIndex转换为DataFrame的列。

对于您的示例,它会给出如下内容:

> ds_perg1_2_merged.reset_index()
           DescricaoProblema                        strRazaoSocial    
0         Cobrança indevida.               CAIXA ECONOMICA FEDERAL  66
1         Cobrança indevida.                     CAIXA SEGUROS S.A  45
2         Cobrança indevida.                        BANCO BMG S.A.  38
3  Cobrança indevida/abusiva                             CLARO S/A  50
4  Cobrança indevida/abusiva                       TIM CELULAR S/A  47
5  Cobrança indevida/abusiva  COMPANHIA PIRATININGA DE FORÇA E LUZ  34
6          Produto com vício                        VIA VAREJO S/A  46
7          Produto com vício   SAMSUNG ELETRONICA DA AMAZONIA LTDA  27
8          Produto com vício                         WHIRLPOOL S/A  23

0