在python中加入列表和列表列表

时间:2015-07-17 11:03:53

标签: python mysql list pandas pymysql

我有什么应该是一个简单的问题,但尝试不同的事情需要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']]

任何想法? 非常感谢!

3 个答案:

答案 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)

其他可能性:

您可以将其作为列表

插入数据位置0
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']]

但是如果你打算操纵头变量你可以浅层复制它

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']]