在python中将查询结果转换为数据帧

在python中将查询结果转换为数据帧,python,pandas,dataframe,psycopg2,Python,Pandas,Dataframe,Psycopg2,我正在尝试使用psycog2对查询结果执行操作。因此,我必须将结果转换为数据帧。但是当我使用下面的代码并打印时,只打印列名称,而不打印行。我也使用了“pd.DataFrame.from_records”,但这不起作用 import psycopg2 import pandas as pd import numpy as np conn_string = "Connect_Info" conn = psycopg2.connect(conn_string) cursor = conn.cursor

我正在尝试使用psycog2对查询结果执行操作。因此,我必须将结果转换为数据帧。但是当我使用下面的代码并打印时,只打印列名称,而不打印行。我也使用了“pd.DataFrame.from_records”,但这不起作用

import psycopg2
import pandas as pd
import numpy as np
conn_string = "Connect_Info"
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.execute(query)
rows=pd.DataFrame(cursor.fetchall(),columns=['page_num','Frequency'])

for row in rows:
   print row

conn.commit();
conn.close();
cursor.fetchall()的结果


这正是当您在数据帧上迭代时应该发生的事情,您将看到列名。如果您想查看df,只需打印df即可。要查看行,请执行以下操作:

for ind, row in df.iterrows(): 
    print(row.values)
或.价值观:

for row in df.values:
   print(row)

另一个建议是使用itertuples,它生成(索引、行值1、行值2…)元组


正如您所看到的,第一个位置是索引,socend是第一列的值,第二个是第二列的值。

可能不会直接回答您的问题,但您应该使用
读取sql\u查询
,而不是自己执行fetchall和wrap-in-DataFrame。这看起来像:

conn = psycopg2.connect(...)
rows = pd.read_sql_query(query, conn)
而不是上面所有的代码

对于您的实际问题,请参阅以获取解释和不同选项。

基本原理是迭代数据帧,然后迭代列名。要对行进行迭代,可以使用其他函数,如
.iterrows()
.itertuples()
。但是请记住,在大多数情况下,不需要在行上手动迭代。

可以将cursor.fetchall()的结果放在这里吗?可以打印cursor.fetchall()的输出吗?也不确定您是否可以通过这种方式迭代数据帧从df返回的iterable是列而不是行。注1:为了获取数据,您可以更好地使用
read\u sql\u query
,然后以上所有内容几乎变成一行(请参见我的答案)。注2:您能否澄清您想要执行的操作类型?在数据帧的行上手动迭代不是很有效,在大多数情况下也不需要(大多数操作可以通过矢量化方法完成)。从技术上讲,一个元组由(索引,序列)组成,因此如果只需要行值,则返回
对于索引,df.iterrows()中的行:print(row)
将是better@maggs该行实际上是一个
系列
,因此您可以使用列名获取值,如果您只需要这些值,那么
打印(row.values)
将为您提供所需的内容want@EDChum知道了。谢谢你的解释。我正在学习postgress和python。我必须建立一个系统,将涉及不同模块的查询数量。对于这个问题,我试图制作一个直方图,其中x轴作为查询结果的第1列,y轴作为第2列。
for tup in rows.itertuples():
    print tup

'(0, 1, 90990)
(1, 3, 6532)
(2, 2, 5614)
(3, 4, 4016)
...'
conn = psycopg2.connect(...)
rows = pd.read_sql_query(query, conn)