[英]Create pandas dataframe from numpy array
要從numpy創建一個熊貓數據框,我可以使用:
columns = ['1','2']
data = np.array([[1,2] , [1,5] , [2,3]])
df_1 = pd.DataFrame(data,columns=columns)
df_1
如果我改為使用:
columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame(data,columns=columns)
df_1
其中每個數組都是一列數據。 但這會引發錯誤:
ValueError: Wrong number of items passed 3, placement implies 2
熊貓是否支持這種數據格式,或者我必須使用示例1中的格式嗎?
您需要轉置numpy
數組:
df_1 = pd.DataFrame(data.T, columns=columns)
要了解為什么這樣做是必要的,請考慮數組的形狀:
print(data.shape)
(2, 3)
形狀元組中的第二個數字或數組中的列數必須等於數據框中的列數。
當我們對數組進行轉置時,將對數組的數據和形狀進行轉置,從而使其能夠傳遞到具有兩列的數據幀中:
print(data.T.shape)
(3, 2)
print(data.T)
[[1 1]
[2 5]
[2 3]]
DataFrame是從數組中固有地按此順序創建的。
無論哪種方式,您都需要轉置一些東西。
一種選擇是指定index = columns然后轉置整個對象。 這將為您提供相同的輸出。
columns = ['1','2']
data = np.array([[1,2,2] , [1,5,3]])
df_1 = pd.DataFrame(data, index=columns).T
df_1
如上所述,傳遞data.T也是完全可以接受的(假設數據是ndarray類型)。
在第二種情況下,您可以使用:
df_1 = pd.DataFrame(dict(zip(columns, data)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.