【问题标题】:Convert two Pandas Dataframes into a dictionary of tuples for each group将两个 Pandas Dataframes 转换为每个组的元组字典
【发布时间】:2019-01-24 17:34:00
【问题描述】:

我目前有两个 DataFrame,分别命名为“means”和“variances”,每个都按“Class”特征分组,如图所示。

表示数据框:

         Pregnancies     Glucose     BP
Class                
0        4.00            99.8        56.0
1        4.75            130         62.5

方差数据框:

         Pregnancies     Glucose     BP
Class                
0        9.10            698         326
1        14.1            1023        463

我想返回一个包含两个键值对的字典,其中的键等于类号,值作为包含数据帧中每个特征的均值和方差值的元组,如下所示:

dict = {0:[(4.00, 9.10), (99.8, 698), (56.0, 326)],
        1:[(4.75, 14.1), (130, 1023), (62.6, 463)]}

仍在研究我的数据处理技能。作为参考,这是从(接近)零开始构建朴素贝叶斯分类器的一部分。朴素贝叶斯分类的理论对我来说并不难理解,我显然在努力解决的部分是正确格式化我的数据。

【问题讨论】:

    标签: python python-3.x pandas numpy pandas-groupby


    【解决方案1】:

    一种方法是连接您的数据帧,然后使用groupby + apply

    res = pd.concat([means, variances])\
            .groupby(level=0).apply(lambda x: list(map(tuple, x.values.T))).to_dict()
    
    print(res)
    
    {0: [(4.0, 9.1), (99.8, 698.0), (56.0, 326.0)],
     1: [(4.75, 14.1), (130.0, 1023.0), (62.5, 463.0)]}
    

    如果列表列表就足够了,那么lambda x: x.values.T.tolist() 将更具可读性。

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多