已解决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不会解决的小伙伴),报错代码如下:
import pandas as pddata = {'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 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对象失败相关推荐
- Pandas创建DataFrame对象的几种常用方法
DataFrame是pandas常用的数据类型之一,表示带标签的可变二维表格.本文介绍如何创建DataFrame对象,后面会陆续介绍DataFrame对象的用法. 首先,使用pip.conda或类似工 ...
- oracle vm virtualbox 失败,Oracle VM VirtualBox启动提示“创建COM对象失败”
摘要: 从工作的第一天开始,Genymotion成为唯一的Android调试工具,体验Genymotion模拟器的快速与便捷,同时也忍受Genymotion安装的痛苦,刚接触Genymotion的时候 ...
- [转载] Pandas:DataFrame对象的基础操作
参考链接: 创建一个Pandas DataFrame DataFrame对象的创建,修改,合并 import pandas as pd import numpy as np 创建DataFrame对象 ...
- Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意思?
Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意义? 通常来说:axis = 0代表行, axis=1代表列. 一.从删除操作来看axis: 举个 ...
- pandas中DataFrame对象to_csv()方法中的encoding参数
当使用pd.read_csv()方法读取csv格式文件的时候,常常会因为csv文件中带有中文字符而产生字符编码错误,造成读取文件错误,在这个时候,我们可以尝试将pd.read_csv()函数的enco ...
- pandas创建DataFrame的几种方式(建议收藏)
pandas创建DataFrame的几种方式 如果你是一个pandas初学者,那么不知道你会不会像我一样.在学用列表或者数组创建DataFrame时理不清怎样用数据生成以及想要形状的的Datafram ...
- xp下创建DOMDocument对象失败的解决方法
前段时是写关于msxml的东西,工程的主要内容是关于xml文件的读取,显示.修改及保存.工程环境是vs2010,系统是win7. 实现完成后,去测试部一测,无法读取文件.写好的程序居然不能用. 测试的 ...
- 已解决pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
已解决raise InvalidIndexError(self._requires_unique_msg) pandas.errors.InvalidIndexError: Reindexing on ...
- Pandas实战-DataFrame对象
本文将主要介绍以下内容: 1. DataFrame概述 2. Series和DataFrame的相似点 3. DataFrame排序 4. 按DataFrame索引排序 5. 设置新索引 6. 从Da ...
最新文章
- java update set_mybatis update set 多个字段实例
- 独家 | 使用Python实现机器学习特征选择的4种方法(附代码)
- SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台
- weblogic10数据源(连接池)配置
- SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法
- Office365下部署SharePoint站点集
- iptable详解概念
- linux中的bg命令作用,linux bg和fg命令
- github视频教程-02 建立项目仓库以及代码上传
- 苏宁11.11:搜索引擎Solr在苏宁易购商品评价系统中的应用
- [Android]按阶段编译Android kernel中的代码
- 微信Windows客户端版本无法打开小程序问题的解决
- 使用.htaccess 开启gzip 缓存文件 网页 提高速度 和 .htaccess文件用法集锦
- Python-pptx ChartData
- 【诸葛】大数据的未来:数据是商品,你就是猎物
- 福利来啦!花瓣网图片批量下载助手APP终于完工,再也不用一张一张保存美图了。
- Site Template
- 关于2022年宣城市集成电路布图设计登记有效期及收费相关说明
- 青岛大学计算机研究生实验室,实验室概况
- Advice from Zed A. Shaw.
热门文章
- 仿滴滴首页车辆随机平滑移动,基于高德地图
- 短视频素材怎么找?怎么做短视频运营?
- 六安构建智慧城市节水管理平台
- 智慧电网运维-覆冰在线监测装置
- billing block
- Centos 7安装tig报错:include/tig/tig.h:83:31: fatal error: ncursesw/curses.h: No such file or directory
- 游戏角色是怎么动起来的?3D游戏动画系统介绍
- Flutter 环境配置
- Java 应用程序,该程序中有 3 个类:Triangle、T rapezium 和 Circle,分别用来 表示三角形、梯形和圆形。
- 知乎视频下载(爬虫)