python - 如何根据分组值将字典插入数据框的行?

标签 python python-3.x pandas dataframe dictionary

我有这些数据:

                                 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() 方法,但通过此方法,我获得了所有代码值及其代码,但不尊重分组。我怎么能这样做?任何帮助将不胜感激。

提前非常感谢

最佳答案

尝试以下操作,

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

关于python - 如何根据分组值将字典插入数据框的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163147/

相关文章:

python - 将字符串日期转换为另一个字符串日期

Python - 尝试使用意外的 mimetype : 解码 JSON

python - pandas - 从 json 数据创建数据框,指定要包含哪些列

python - 在列表的一列上调用 .values 返回一个对象数组

python - 如何使用 Poetry 创建可部署的 Python Lambda zip

python - 使用小时作为中点将 Pandas DataFrame 重新采样为每小时

python - 如何在德语语言环境中将字符串转换为 Python Decimal(使用逗号而不是点)

python - Pandas - 从其中一列将列添加到基于 Dict 的 DataFrame

python - 如何在此脚本中找到查找结果以通过电子邮件发送

python - 当本地模块屏蔽了外部模块导入的标准库模块时,如何导入外部模块?