網站首頁 編程語言 正文
報錯代碼
粉絲群一個小伙伴想pandas創建DataFrame對象,但是發生了報錯(當時他心里瞬間涼了一大截,跑來找我求助,然后順利幫助他解決了,順便記錄一下希望可以幫助到更多遇到這個bug不會解決的小伙伴),報錯代碼如下:
import pandas as pd
data = {'name': ['a', 'b'],
'Height': [140, 150, 160, 170],
'Weight': [40, 50, 60, 70]}
df = pd.DataFrame(data, index=list('abcd'))
print(df)
報錯信息截圖如下所示:
報錯翻譯
報錯信息翻譯如下:
值錯誤:傳遞值的形狀為(2,3),索引表示(4,3)
報錯原因
傳遞創建DataFrame的值和索引對不上,小伙伴們按下面正確的方法創建即可!!!
解決方法
每一個列表的長度都要相同
import pandas as pd
data = {'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'>
幫忙解決
原文鏈接:https://blog.csdn.net/yuan2019035055/article/details/128424563
相關推薦
- 2022-04-23 Tooltip 組件:根據內容是否溢出判斷是否顯示 Tooltip
- 2022-12-04 C#目錄和文件管理操作詳解_C#教程
- 2022-11-12 一文搞懂Go語言中defer關鍵字的使用_Golang
- 2022-11-18 詳解Pandas如何高效對比處理DataFrame的兩列數據_python
- 2022-08-17 R語言繪制corrplot相關熱圖分析美化示例及詳細圖解_R語言
- 2022-06-27 在Python中如何讓字典保持有序_python
- 2022-12-05 Python實現字符串模糊匹配方式_python
- 2022-04-16 pycharm如何為函數插入文檔注釋_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支