如何将numpy数组元素逐行添加到熊猫数据框?

时间:2020-01-30 18:44:53

标签: python pandas numpy

我有一个以下形式的numpy数组 arr

array([[ 0.00021284, -0.04443965,  0.03926146, ...,  0.04830161,
    -0.11913304,  0.03370821],
   [ 0.01778569, -0.05192029, -0.00792321, ..., -0.01799901,
    -0.09819183,  0.06020728],
   [-0.00748426, -0.02401578,  0.01762747, ...,  0.09334017,
    -0.11837556,  0.00603597],
   [-0.03505319, -0.01932572, -0.03248611, ...,  0.00356432,
    -0.082398  ,  0.03887841],
   [-0.05111802, -0.0309066 ,  0.03542011, ..., -0.01343899,
    -0.10434885, -0.0315006 ]], dtype=float32)

假设形状为(5,512)

我还有一个如下格式的熊猫数据框 df

    Message
0   How are you?
1   What is your name?
2   What do you do?
3   What is your address?
4   Let's hang out?

我想通过创建新列将 arr 中的每一行作为 df 中的元素附加:

    Message                Vector
0   How are you?           [ 0.00021284, -0.04443965,  0.03926146, ...,  0.04830161, -0.11913304, 0.03370821] 
1   What is your name?     [ 0.01778569, -0.05192029, -0.00792321, ..., -0.01799901, -0.09819183,  0.06020728]
2   What do you do?        [-0.00748426, -0.02401578,  0.01762747, ...,  0.09334017, -0.11837556,  0.00603597]
3   What is your address?  [-0.03505319, -0.01932572, -0.03248611, ...,  0.00356432, -0.082398,  0.03887841]
4   Let's hang out?        [-0.05111802, -0.0309066 ,  0.03542011, ..., -0.01343899, -0.10434885, -0.0315006 ]

实现此目标的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

为该问题创建一个数组,并将其转换为列表。

a = np.array([[ 0.00021284, -0.04443965,  0.03926146,  0.04830161,
    -0.11913304,  0.03370821],
   [ 0.01778569, -0.05192029, -0.00792321, -0.01799901,
    -0.09819183,  0.06020728],
   [-0.00748426, -0.02401578,  0.01762747,  0.09334017,
    -0.11837556,  0.00603597],
   [-0.03505319, -0.01932572, -0.03248611,  0.00356432,
    -0.082398  ,  0.03887841],
   [-0.05111802, -0.0309066 ,  0.03542011, -0.01343899,
    -0.10434885, -0.0315006 ]]).tolist()

结果:

print(a)

[[0.00021284, -0.04443965, 0.03926146, 0.04830161, -0.11913304, 0.03370821], [0.01778569, -0.05192029, -0.00792321, -0.01799901, -0.09819183, 0.06020728], [-0.00748426, -0.02401578, 0.01762747, 0.09334017, -0.11837556, 0.00603597], [-0.03505319, -0.01932572, -0.03248611, 0.00356432, -0.082398, 0.03887841], [-0.05111802, -0.0309066, 0.03542011, -0.01343899, -0.10434885, -0.0315006]]

然后将列表添加到数据框。

df = pd.DataFrame({"Message": [
"How are you?",
"What is your name?",
"What do you do?",
"What is your address?",
"Let's hang out?"]})
df['Array'] = a
print(df)

针对:

                Message                                              Array
0           How are you?  [0.00021284, -0.04443965, 0.03926146, 0.048301...
1     What is your name?  [0.01778569, -0.05192029, -0.00792321, -0.0179...
2        What do you do?  [-0.00748426, -0.02401578, 0.01762747, 0.09334...
3  What is your address?  [-0.03505319, -0.01932572, -0.03248611, 0.0035...
4        Let's hang out?  [-0.05111802, -0.0309066, 0.03542011, -0.01343...

要在开始时创建所有内容,可以使用字典:

df = pd.DataFrame({"Message": [
"How are you?",
"What is your name?",
"What do you do?",
"What is your address?",
"Let's hang out?"], "Array": a})