已解决pandas创建DataFrame对象失败
已解決(pandas創建DataFrame對象失敗)ValueError: Shape of passed values is (1509, 1), indices imply (1509, 2)
文章目錄
- 報錯代碼
 - 報錯翻譯
 - 報錯原因
 - 解決方法
 - 創建DataFrame對象的四種方法
 - 1. list列表構建DataFrame
 - 2. dict字典構建DataFrame
 - 3. ndarray創建DataFrame
 - 4. Series創建DataFrame
 
- 千人全棧VIP答疑群聯系博主幫忙解決報錯
 
報錯代碼
粉絲群一個小伙伴想pandas創建DataFrame對象,但是發生了報錯(當時他心里瞬間涼了一大截,跑來找我求助,然后順利幫助他解決了,順便記錄一下希望可以幫助到更多遇到這個bug不會解決的小伙伴),報錯代碼如下:
 
報錯信息截圖如下所示:
 
報錯翻譯
報錯信息翻譯如下:
 
值錯誤:傳遞值的形狀為(2,3),索引表示(4,3)
 
 
 
報錯原因
報錯原因:
 
傳遞創建DataFrame的值和索引對不上,小伙伴們按下面正確的方法創建即可!!!
 
解決方法
每一個列表的長度都要相同:
import pandas as pddata = {'name': ['a', 'b','c','d'],'Height': [155, 160, 175, 180],'Weight': [50, 48, 52, 65]} df = pd.DataFrame(data, index=list('abcd')) print(df)運行結果:
 
 
創建DataFrame對象的四種方法
DataFrame 構造方法如下:
pandas.DataFrame( data, index, columns, dtype, copy)參數說明:
-  
data:一組數據(ndarray、series, map, lists, dict 等類型)。
 -  
index:索引值,或者可以稱為行標簽。
 -  
columns:列標簽,默認為 RangeIndex (0, 1, 2, …, n) 。
 -  
dtype:數據類型。
 -  
copy:拷貝數據,默認為 False。
 
1. list列表構建DataFrame
1)通過單列表創建
>>> import pandas as pd >>> >>> data = [0, 1, 2, 3, 4, 5] >>> df = pd.DataFrame(data) >>> print(df)0 0 0 1 1 2 2 3 3 4 4 5 5 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>2)通過嵌套列表創建
>>> import pandas as pd >>> >>> data = [['小明', 20], ['小紅', 10]] >>> df = pd.DataFrame(data, columns=['name', 'age'], dtype=float) sys:1: FutureWarning: Could not cast to float64, falling back to object. This behavior is deprecated. In a future version, when a dtype is passed to 'DataFrame', either all columns will be cast to that dtype, or a TypeError will be raised >>> print(df)name age 0 小明 20.0 1 小紅 10.0 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>3)列表中嵌套字典(字典的鍵被用作列名,缺失則賦值為NaN):
>>> import pandas as pd >>> >>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}] >>> df = pd.DataFrame(data) >>> print(df)A B C 0 1 2 NaN 1 3 4 5.0 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>2. dict字典構建DataFrame
使用 dict 創建,dict中列表的長度必須相同, 如果傳遞了index,則索引的長度應等于數組的長度。如果沒有傳遞索引,則默認情況下,索引將是range(n),其中n是數組長度。
1)普通創建:
>>> import pandas as pd >>> >>> data = {'name': ['小紅', '小明', '小白'], 'age': [10, 20, 30]} >>> df = pd.DataFrame(data) >>> print(df)name age 0 小紅 10 1 小明 20 2 小白 30 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>2)設置index創建:
>>> import pandas as pd >>> >>> data = {'name': ['小紅', '小明', '小白'], 'age': [10, 20, 30]} >>> df = pd.DataFrame(data, index=['老三', '老二', '老大']) >>> print(df)name age 老三 小紅 10 老二 小明 20 老大 小白 30 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>3. ndarray創建DataFrame
1)普通方式創建:
>>> import pandas as pd >>> import numpy as np >>> >>> data = np.random.randn(3, 3) >>> print(data) [[-1.9332579 0.70876382 -0.44291914][-0.26228642 -1.05200338 0.57390067][-0.49433001 0.70472595 -0.50749279]] >>> print(type(data)) <class 'numpy.ndarray'> >>> df = pd.DataFrame(data) >>> print(df)0 1 2 0 -1.933258 0.708764 -0.442919 1 -0.262286 -1.052003 0.573901 2 -0.494330 0.704726 -0.507493 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>2)設置列名創建:
>>> import pandas as pd >>> import numpy as np >>> >>> data = np.random.randn(3, 3) >>> print(data) [[-0.22028147 0.62374794 -0.66210282][-0.71785439 -1.21004547 1.15663811][ 1.47843923 0.4385811 0.31931312]] >>> print(type(data)) <class 'numpy.ndarray'> >>> df = pd.DataFrame(data, columns=list("ABC")) >>> print(df)A B C 0 -0.220281 0.623748 -0.662103 1 -0.717854 -1.210045 1.156638 2 1.478439 0.438581 0.319313 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>4. Series創建DataFrame
>>> import pandas as pd >>> >>> data = {'A': pd.Series(1, index=list(range(4)), dtype='float32'), ... 'B': pd.Series(2, index=list(range(4)), dtype='float32'), ... 'C': pd.Series(3, index=list(range(4)), dtype='float32') ... } >>> df = pd.DataFrame(data) >>> print(df)A B C 0 1.0 2.0 3.0 1 1.0 2.0 3.0 2 1.0 2.0 3.0 3 1.0 2.0 3.0 >>> print(type(df)) <class 'pandas.core.frame.DataFrame'>以上是此問題報錯原因的解決方法,歡迎評論區留言討論是否能解決,如果有用歡迎點贊收藏文章謝謝支持,博主才有動力持續記錄遇到的問題!!!
千人全棧VIP答疑群聯系博主幫忙解決報錯
由于博主時間精力有限,每天私信人數太多,沒辦法每個粉絲都及時回復,所以優先回復VIP粉絲,可以通過訂閱限時9.9付費專欄《100天精通Python從入門到就業》進入千人全棧VIP答疑群,獲得優先解答機會(代碼指導、遠程服務),白嫖80G學習資料大禮包,專欄訂閱地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
-  
優點:作者優先解答機會(代碼指導、遠程服務),群里大佬眾多可以抱團取暖(大廠內推機會),此專欄文章是專門針對零基礎和需要進階提升的同學所準備的一套完整教學,從0到100的不斷進階深入,后續還有實戰項目,輕松應對面試!
 -  
專欄福利:簡歷指導、招聘內推、每周送實體書、80G全棧學習視頻、300本IT電子書:Python、Java、前端、大數據、數據庫、算法、爬蟲、數據分析、機器學習、面試題庫等等
 -  
注意:如果希望得到及時回復,訂閱專欄后私信博主進千人VIP答疑群
 
總結
以上是生活随笔為你收集整理的已解决pandas创建DataFrame对象失败的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: WAP、触屏版网站及APP的区别
 - 下一篇: 使用docker成功安装paddlesp