簡體   English   中英

如何將 numpy 數組元素逐行添加到 Pandas 數據幀?

[英]How to add numpy array elements row-wise to a pandas dataframe?

我有一個 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)

我還有一個 Pandas 數據框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 ]

實現這一目標的有效方法是什么?

為問題創建一個數組,並將其轉換為列表。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM