[開發技巧]·pandas如何儲存numpy元素
阿新 • • 發佈:2019-05-10
[開發技巧]·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區別是什麼呢?後面我會通過一個部落格來好好闡述一