将每个组的两个Pandas数据帧转换为元组字典

时间:2019-01-24 17:34:00

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

我目前有两个数据框,分别称为“均值”和“方差”,分别按“类”功能分组。

表示DataFrame:

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

差异DataFrame:

         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)]}

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

1 个答案:

答案 0 :(得分:2)

一种方法是连接数据帧,然后使用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()更具可读性。