我有什么应该是一个简单的问题,但尝试不同的事情需要3个小时,我无法解决它。
我有一个pymysql从查询返回结果。我不能分享确切的例子,但这个稻草人应该这样做。
cur.execute("select name, address, phonenum from contacts")
这样可以完美地返回结果,我用
抓取results = cur.fetchall()
然后完全按照我想要的方式转换为列表对象
data = list(results)
不幸的是,这不包括标题,但您可以使用cur.description(包含但不限于标题的元数据)来获取它。我将其推入列表
Header=[]
for n in cur.description:
header.append(str((n[0])))
所以我的标题如下:
['name','address','phonenum']
我的结果如下:
[['Tom','dublin','12345'],['Bob','Kerry','56789']]
我想在pandas中创建一个数据框,然后转动它,但它需要列标题才能正常工作。我以前一直在将一个已完成的csv导入到包含标题的pandas DF中,所以这一切都很顺利,但现在我需要直接从数据库中获取这些数据,所以我想,这很简单,我只是加入这两个列表并且嘿presto我有我正在寻找的东西,但当我试图追加时,我实际上已经结束了这个:
['name','address','phonenum',['Tom','dublin','12345'],['Bob','Kerry','56789']]
当我需要这个时
[['name','address','phonenum'],['Tom','dublin','12345'],['Bob','Kerry','56789']]
任何想法? 非常感谢!
答案 0 :(得分:2)
添加列表连接内容:
In [17]: [1] + [2,3]
Out[17]: [1, 2, 3]
即使内容本身就是列表也是如此:
In [18]: [[1]] + [[2],[3]]
Out[18]: [[1], [2], [3]]
所以:
In [13]: header = ['name','address','phonenum']
In [14]: data = [['Tom','dublin','12345'],['Bob','Kerry','56789']]
In [15]: [header] + data
Out[15]:
[['name', 'address', 'phonenum'],
['Tom', 'dublin', '12345'],
['Bob', 'Kerry', '56789']]
In [16]: pd.DataFrame(data, columns=header)
Out[16]:
name address phonenum
0 Tom dublin 12345
1 Bob Kerry 56789
请注意,使用pandas.read_sql也可以使用数据库中的数据加载DataFrame。
答案 1 :(得分:0)
是你在寻找什么?
first = ['name','address','phonenum']
second = [['Tom','dublin','12345'],['Bob','Kerry','56789']]
second = [first] + second
print second
'[['name', 'address', 'phonenum'], ['Tom', 'dublin', '12345'], ['Bob', 'Kerry', '56789']]'
答案 2 :(得分:0)
其他可能性:
您可以将其作为列表
插入数据位置0header = ['name','address','phonenum']
data = [['Tom','dublin','12345'],['Bob','Kerry','56789']]
data.insert(0,header)
print data
[['name', 'address', 'phonenum'], ['Tom', 'dublin', '12345'], ['Bob', 'Kerry', '56789']]
但是如果你打算操纵头变量你可以浅层复制它
header = ['name','address','phonenum']
data = [['Tom','dublin','12345'],['Bob','Kerry','56789']]
data.insert(0,header[:])
print data
[['name', 'address', 'phonenum'], ['Tom', 'dublin', '12345'], ['Bob', 'Kerry', '56789']]