【问题标题】:How to insert a dictionary into dataframe's row based on grouped values?如何根据分组值将字典插入数据框行?
【发布时间】:2019-07-23 11:27:09
【问题描述】:

我有这些数据:

                                 count
Year         Month  Code    
2016         1      ENE001SOLC   121
                    SAL016DECL   92
                    TRN002SIGN   54
                    HAB002SOLC   38
                    TRE001SIGN   37
                    ESP003SOLC   36
                    TRN002SOLC   32
             2      ENE001SOLC   151
                    CAT001SOLC   143
                    VIT001SOLC   90
                    TRE001SIGN   80
                    TRN002SOLC   74
                    BOM001SOLC   72
             3      ENE001SOLC   114
                    ENT002JUST   96
                    TRE001SIGN   94
                    TRN002SIGN   89
                    ENT002APOR   76
                    TRN002SOLC   56

此数据样本按年和月分组。如您所见,它显示给定代码的频率。

我想要做的是获取同一个月出现的所有代码值,并将它们放入 python 字典中,其中键是代码,计数是值,所以我可以在同一行,所有键及其各自的计数。所需的输出应如下所示:

Year         Month  Code_count    
2016         1      {ENE001SOLC: 121, SAL016DECL: 92, TRN002SIGN: 54, HAB002SOLC: 38, HAB002SOLC: 38, TRE001SIGN: 37, ESP003SOLC: 36, TRN002SOLC: 32}

             2      {ENE001SOLC: 151, CAT001SOLC: 143, VIT001SOLC: 90, TRE001SIGN: 80, TRN002SOLC: 74, BOM001SOLC: 72}

你可以看到我的想法是什么。我曾尝试使用pd.to_dict() 方法,但这样我得到了所有代码值及其代码,但不尊重分组。我怎么能这样做?任何帮助将不胜感激。

非常感谢您

【问题讨论】:

    标签: python python-3.x pandas dataframe dictionary


    【解决方案1】:

    试试下面的,

    result = (df.reset_index()
                .groupby(['Year','Month'])
                .apply(lambda x:x.set_index('Code')['count'].to_dict())
             )
    
    

    【讨论】:

    • groupby(['Year','Month']) 会将数据拆分为唯一的年月组合,apply 对每个组进行操作,本例中为to_dict
    猜你喜欢
    • 1970-01-01
    • 2021-04-15
    • 2019-01-25
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多