Python 3.x:从两个字典创建数据框

时间:2019-01-04 17:23:56

标签: python python-3.x pandas dictionary

我正在使用Python3.x。要实现的是:基于键合并字典并形成数据框。这将清除:

我所拥有的:

import numpy as np
import pandas as pd

d1 = {(1, "Autumn"): np.array([2.5, 4.5, 7.5, 9.5]), (1, "Spring"): np.array([10.5, 11.7, 12.3, 15.0])}
d2 = {(1, "Autumn"): np.array([10.2, 13.3, 15.7, 18.8]), (1, "Spring"): np.array([15.6, 20, 23, 27])}

我想要实现的目标:

d3 = {(1, "Autumn"): pd.DataFrame([[2.5, 10.2], [4.5, 13.3], [7.5, 15.7], [9.5, 18.8]], 
  columns = ["d1", "d2"]), (1, "Spring"): pd.DataFrame([[10.5, 15.6], [11.7, 20], 
            [12.3, 23], [15.0, 27]], columns = ["d1", "d2"])}

P。 S .:我实际上正在研究RandomForestRegressor示例。上面的词典是训练和测试数据拆分后的X和y值。我想要实现的是在具有上述查询的图的数据框中并排获得X,y。字典的大小与两个字典中的键和每个键的值数目相同。

1 个答案:

答案 0 :(得分:1)

由于所有字典中都包含所有键(根据您的评论),因此您可以遍历一个词典的键,并为每个键从每个词典条目中创建一个数据框:

d3 = dict()
for k in d1.keys():
    d3[k] = pd.DataFrame(np.array([d1[k],d2[k]]).T, columns=["d1","d2"])

输出:

{(1, 'Autumn'):   
    d1    d2
 0  2.5  10.2
 1  4.5  13.3
 2  7.5  15.7
 3  9.5  18.8, 
(1, 'Spring'):    
    d1    d2
 0  10.5  15.6
 1  11.7  20.0
 2  12.3  23.0
 3  15.0  27.0}