PandasError报错咨询:DataFrame构造函数调用不当问题排查
解决Pandas DataFrame构造报错的问题
嘿,我一眼就揪出问题啦!你代码里的这个小失误真的很容易被忽略:
你定义字典d的时候,最后多写了一个逗号:
d = ({'Time' : np.random.randint(k, k + 100 , size=N), 'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'], 'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'], 'Number2' : [1,1,'xx',1,'xx',2,'xx',2]}),
这个逗号直接让d从普通字典,变成了仅包含单个字典元素的元组。而Pandas的DataFrame构造函数没法直接解析元组这种结构,所以才抛出了PandasError: DataFrame constructor not properly called!这个报错。
修正后的代码
只需要把那个多余的逗号删掉就搞定了:
import pandas as pd import numpy as np k = 5 N = 8 # 去掉末尾的逗号,让d变回正常字典 d = {'Time' : np.random.randint(k, k + 100 , size=N), 'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'], 'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'], 'Number2' : [1,1,'xx',1,'xx',2,'xx',2]} df = pd.DataFrame(data=d) # 可以打印验证结果 print(df)
补充小知识
在Python里,单个表达式后面加逗号会被自动包装成元组,比如a = (1,)是元组,而a = 1是整数。你的代码就是不小心触发了这个语法特性,把字典意外变成了元组,才导致Pandas无法正确处理。
内容的提问来源于stack exchange,提问作者user9639519
相关产品推荐
相关产品推荐

