已解决ValueError: 4 columns passed, passed data had 2 columns
已解决(pandas创建DataFrame对象失败)ValueError: 4 columns passed, passed data had 2 columns
文章目录
- 报错代码
- 报错翻译
- 报错原因
- 解决方法
- 创建DataFrame对象的四种方法
- 1. list列表构建DataFrame
- 2. dict字典构建DataFrame
- 3. ndarray创建DataFrame
- 4. Series创建DataFrame
- 帮忙解决
报错代码
粉丝群一个小伙伴想pandas创建DataFrame对象,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错代码如下:
import pandas as pddata = [[1, 2], [3, 4], [5, 6], [7, 9]]
df = pd.DataFrame(data, columns=list('ABCD'))
print(df)
报错信息截图如下所示:
报错翻译
报错信息翻译如下:
值错误:传递了4列,传递的数据有2列
报错原因
报错原因:
粉丝通过嵌套列表创建DataFrame,[1, 2]
为两个元素,所以所对应的列也应该是两列,但是columns传递了4列,所以报错。小伙伴们按下面的代码创建即可!!!
解决方法
正确的创建语句:
import pandas as pddata = [[1, 2], [3, 4], [5, 6], [7, 9]]
df = pd.DataFrame(data, columns=list('AB'))
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'>
帮忙解决
本文已收录于:《告别Bug》专栏
本专栏用于记录学习和工作中遇到的各种疑难Bug问题,以及粉丝群里小伙伴提出的各种问题,文章形式:报错代码 + 报错翻译 + 报错原因 + 解决方法,包括程序安装、运行程序过程中等等问题,订阅专栏+关注博主后如遇到其他问题可私聊帮忙解决!!!
已解决ValueError: 4 columns passed, passed data had 2 columns相关推荐
- 已解决ValueError: Length mismatch: Expected axis has 5 elements, new values have 4 elements
已解决ValueError: Length mismatch: Expected axis has 5 elements, new values have 4 elements 文章目录 报错代码 报 ...
- 已解决ValueError: Expected 2D array, got 1D array instead
已解决ValueError: Expected 2D array, got 1D array instead 文章目录 报错问题 解决方法 PS 报错问题 之前在工作中遇到过这个坑,记录一下问题以及解 ...
- 已解决ValueError: Shape of passed values is (1509, 1), indices imply (1509, 2)
已解决(pandas创建DataFrame对象失败)ValueError: Shape of passed values is (1509, 1), indices imply (1509, 2) 文 ...
- 已解决ValueError: Shape of passed values is (6, 3), indices imply (4, 3)
已解决(pd.concat连接错误)ValueError: Shape of passed values is (6, 3), indices imply (4, 3) 文章目录 报错代码 报错翻译 ...
- 已解决ValueError: All arrays must be of the same length
已解决(pandas创建DataFrame对象报错)ValueError: All arrays must be of the same length 文章目录 报错代码 报错翻译 报错原因 解决方法 ...
- 已解决ValueError: More than 4094 XFs (styles)
已解决(Python xlwt写入Excel样式报错)ValueError: More than 4094 XFs (styles) 文章目录 报错代码 报错翻译 报错原因 解决方法 报错代码 我的代 ...
- 【已解决】Error occurred during loading data. Trying to use cache server_Python系列学习笔记
报错: Error occurred during loading data. Trying to use cache server Error occurred during loading dat ...
- (20200410已解决)ValueError: Cannot convert non-finite values (NA or inf) to integer
问题描述 使用df['col'].astype(int)出现如题错误. 原因是col列有些记录是空,所以没法转成int. 解决方案 df['col'].fillna(0) 将此列空值填充为0或其他数字 ...
- tushare接口get_realtime_quotes报错:AssertionError: 33 columns passed, passed data had 34 columns
tushare接口get_realtime_quotes,今天报错了: AssertionError: 33 columns passed, passed data had 34 columns 看了 ...
最新文章
- DynamicProgramming动态规划整理
- tensorflow1.0 2.0区别
- Visual Studio 2008 使用小技巧
- 一场面试,用20秒介绍自己顺便教训了领导
- 【设计】线框图、原型和视觉稿的区别
- 毕业设计——第三章 开发方法及系统实现(5)
- vue 浏览器调试 样式如何定位样式_浏览器断点调试-程序员的必修课
- FPGA资源不足导致vivado生成bit失败
- java keygenerator_Java密码学KeyGenerator类
- 第一:Python发送邮件时定义文本乱码
- 蓝桥杯 ADV-13 算法提高 最小乘积(提高型)
- 使用std:sort和Eigen根据矩阵某一行/列元素对矩阵的行/列排序
- JavaEE学习01--Tomcat服务器
- 2021-08-01 Python-爬虫练手:爬取上千张“萌妹子“网美图
- 财务知识 - 营业税
- 在 Windows10 系统下重新安装 Ubuntu22.04 系统
- 7-2 计算正五边形的面积和周长 (25分)
- jffs2的目录项查找过程
- Mac用Pycharm安装mediapipe报错ERROR: Could not find a version that satisfies the requirement mediapipe
- 1.1 Go语言简介