1. 程式人生 > >[開發技巧]·pandas如何儲存numpy元素

[開發技巧]·pandas如何儲存numpy元素

[開發技巧]·pandas如何儲存numpy元素


1.問題描述

在開發的過程中遇到一個問題,就是需要把numpy作為pandas的一個元素進行儲存,注意不是作為一列元素。但是實踐的過程中卻不順利,會報錯,現在我解決了這個問題,並且把心得和理解分享出來,希望能幫到後來人。

 

2.開發實戰

1.新建一些偽資料,用於儲存

import pandas as pd
import numpy as np

l1 = [1,2,3,4]
l2 = [.1,.2,.3,.4]

lists = np.array([l1,l2])
labels = [1,0]

2.新建DataFrame進行儲存並且顯示

df = pd.DataFrame()
df["list"] = lists
df["label"] = labels

print(df)

這時程式報錯:

    raise Exception('Data must be 1-dimensional')
Exception: Data must be 1-dimensional

錯誤出現在df["list"] = lists,錯誤的原因是lists不是一維資料(Data must be 1-dimensional),為什麼會出現這個問題呢?

原因在lists = np.array([l1,l2]),lists成為了二維的np.array,shape為(2,4)。

如何解決呢?需要把np.array轉為list,就變為一維資料了

3.修正程式碼

import pandas as pd
import numpy as np

l1 = [1,2,3,4]
l2 = [.1,.2,.3,.4]

lists = np.array([l1,l2])
lists = list(lists)
labels = [1,0]

df = pd.DataFrame()
df["list"] = lists
df["label"] = labels

print(df)
輸出結果:
                   list  label
0  [1.0, 2.0, 3.0, 4.0]      1
1  [0.1, 0.2, 0.3, 0.4]      0

可能會有些朋友覺得程式碼有些麻煩,為什麼先用np.array([l1,l2])轉換為np.array再用list(lists)轉換為list,其實這是為了模擬真實使用場景。一般我們接觸到的資料都是np.array,再儲存為pandas,就會報錯(Data must be 1-dimensional),解決方法就是轉換為list。

numpy.array和list區別是什麼呢?後面我會通過一個部落格來好好闡述一