当前位置: 首页 > 知识库问答 >
问题:

PYODBC到pandas-dataframe不工作-传递值的形状为(x,y),索引表示(w,z)

姚浩歌
2023-03-14

我以前在python中使用pyodbc,但现在我已经在一台新机器上安装了它(win 8 64位、python 2.7 64位、PythonXY和Spyder)。

columns = [column[0] for column in cursor.description]
temp = cursor.fetchall()
data = pandas.DataFrame(temp,columns=columns)

我不知道为什么行为会改变。也许是我的Pandas版本,或者是pyodbc,但是更新是有问题的。我试图更新一些模块,但它搞砸了一切,我使用的任何方法(二进制文件--用于正确的机器/安装--PIP安装、easy-install,任何东西!等等。这确实非常令人沮丧。从现在开始,对于Python我可能会避免Win 8 64位)。

真实的例子:

sql = 'Select * form TABLE'
cursor.execute(sql)
columns = [column[0] for column in cursor.description]
data    = cursor.fetchall()
        con.close()
            results = DataFrame(data, columns=columns)

返回:*ValueError:传递值的形状为(1,1540),索引表示(51,1540)

ipdb> type(data)
<type 'list'>
ipdb> np.shape(data)
(1540, 51)
ipdb> type(data[0])
<type 'pyodbc.Row'>
ipdb> DataFrame([1,2,3],columns=['a','b','c'])

*valueError:传递值的形状为(1,3),索引表示(3,3)

如果我们这样做:

ipdb> DataFrame([[1,2,3]],columns=['a','b','c'])

a b c 0 1 2 3

ipdb> DataFrame([data[0]], columns=columns)
*** ValueError: Shape of passed values is (1, 1), indices imply (51, 1)
ipdb> DataFrame(data[0], columns=columns)
*** PandasError: DataFrame constructor not properly called!

共有1个答案

桓深
2023-03-14

对于熊猫0.12(我相信)你可以做到:

import pandas
import pyodbc

sql = 'select * from table'
cnn = pyodbc.connect(...)

data = pandas.read_sql(sql, cnn)

在0.12之前,您可以执行以下操作:

import pandas
from pandas.io.sql import read_frame
import pyodbc

sql = 'select * from table'
cnn = pyodbc.connect(...)

data = read_frame(sql, cnn)
 类似资料:
  • concat线给出 raise VALUERROR(f“传递值的形状为{传递},索引暗示{隐含}”)VALUERROR:传递值的形状为(18585,6),索引暗示(12390,6) 我不明白为什么上面写着18585。还有其他连接方法吗?请帮忙。 编辑:我想我找到了问题所在。 打印结果给了我以下信息 印刷原理图 结果Df最初是通过附加两个Df获得的 行号不是从0到12390的延续,而是从0到6194

  • 我正在登录各种网络设备,并尝试查看输出。下面是我正在运行的脚本,它工作得非常好。当我试图确定po1、allin1、sta1、saa1、stn1的产量时,我面临着这个问题。我已经给出了下面所有变量的输出。po1将是这里的源,如果任何索引在其他变量中不可用,则需要显示“NAn”。如果你对理解这个问题有异议,请告诉我。 下面是我得到的错误。当我把轴设为1时,我得到了这个错误。 po1的产量: allin

  • 我正在尝试合并一个(熊猫14.1)数据帧和一个系列。序列应该形成一个新列,带有一些NAs(因为序列的索引值是数据帧索引值的子集)。 这适用于玩具示例,但不适用于我的数据(详见下文)。 例子: 数据的情况(见下文)似乎基本相同——将一个系列与一个DatetimeIndex连接起来,该索引的值是数据帧的子集。但是它在标题中给出了ValueError(等等1 = (5, 286)等等2 = (5, 27

  • 我正在尝试用熊猫数据框创建一个3d volatlity曲面,我觉得我已经掌握了所有信息,但我不确定如何从中创建3d图形。我读过的每一本指南似乎都使用了3个独立的数组,但我觉得我拥有的数据应该是可绘制的。 我当前的数据帧如下所示: 我希望我的X值是我的索引,Y值是列名(月份),Z值是框架中包含的实际值(例如,第一行第一列中的第一个值...X=35,Y=9/20/2019,Z=0.0879441) 环

  • 当我试图找到这个答案时,我可能使用了糟糕的搜索词。现在,在索引DataFrame之前,我以这种方式在列中获得一个值列表... …然后我将在列上设置索引。这似乎是浪费的一步。在索引上尝试上述操作时,我得到一个键错误。 如何获取索引中的值(单个和多个)并将其放入列表或元组列表中?

  • 预测类的输出 y_的输出为真 我想得到这个代码的索引,并得到这个值错误。 错误痕迹 请告诉我哪里出了问题。