如何在空数据框中的特定列上添加字典键和值

时间:2019-10-09 11:44:11

标签: pandas dictionary append numpy-ndarray

我有一个带3个键的字典,每个值都是一个numpy数组的列表。

我想将此字典追加到一个空的数据框中,以便列表中的numpy数组的值将是第一个数字(“ x”列),在numpy数组的第二个位置处的值(列“ y”)和要用作最后一列的键(列“ z”),如下所示:

my_dict = {0: [array([5.4, 3.9, 1.3, 0.4]), array([4.9, 3. , 1.4, 0.2]),array([4.6, 3.6, 1. , 0.2]), array([4.6, 3.2, 1.4, 0.2]), array([4.7, 3.2, 1.6, 0.2])],
1: [array([6.1, 2.9, 4.7, 1.4]), array([5.9, 3. , 4.2, 1.5]), array([7.4, 2.8, 6.1, 1.9])],
2: [array([7. , 3.2, 4.7, 1.4]), array([5.6, 2.7, 4.2, 1.3])]}

我想获得以下df:

     x     y   z
0  5.4   3.9   0
1  4.9   3.    0
2  4.6   3.6   0
3  4.6   3.2   0
4  4.7   3.2   0
5  6.1   2.9   1
6  5.9   3.    1
7  7.4   2.8   1
8  7.    3.2   2
9  5.6   2.7   2

这有点棘手,我该怎么办?

2 个答案:

答案 0 :(得分:1)

这可以做到:

data = [j[:2].tolist() + [k] for k, v in my_dict.items() for j in v]
df = pd.DataFrame(data, columns=list('xyz')) 

df

     x    y  z
0  5.4  3.9  0
1  4.9  3.0  0
2  4.6  3.6  0
3  4.6  3.2  0
4  4.7  3.2  0
5  6.1  2.9  1
6  5.9  3.0  1
7  7.4  2.8  1
8  7.0  3.2  2
9  5.6  2.7  2

答案 1 :(得分:0)

尝试一下:

target_df=pd.DataFrame(columns=['x','y','z'])  # empty dataframe

for k,v in my_dict.items():
    for val in v:
        d={'x':[val[0]], 'y':[val[1]], 'z':[k]}
        target_df=pd.concat([target_df, pd.DataFrame(d)], ignore_index=True)

print(target_df)将给出所需的数据帧

     x    y  z
0  5.4  3.9  0
1  4.9  3.0  0
2  4.6  3.6  0
3  4.6  3.2  0
4  4.7  3.2  0
5  6.1  2.9  1
6  5.9  3.0  1
7  7.4  2.8  1
8  7.0  3.2  2
9  5.6  2.7  2