在python中连接列表和列表列表

2024-05-10 01:23:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有什么应该是一个简单的问题,但3小时尝试不同的事情,我不能解决它。你知道吗

我有一个pymysql返回查询结果。我不能分享确切的例子,但这个草人应该这样做。你知道吗

cur.execute("select name, address, phonenum from contacts")

这将完美地返回结果,我用

results = cur.fetchall()

然后转换成我想要的列表对象

data = list(results)

不幸的是,这不包括标题,但你可以得到它与当前描述(其中包含元数据,包括但不限于标头)。我把这个列在清单上

Header=[]
for n in cur.description:
    header.append(str((n[0])))

所以我的标题看起来像:

['name','address','phonenum']

我的结果是:

[['Tom','dublin','12345'],['Bob','Kerry','56789']]

我想在pandas中创建一个dataframe,然后对其进行透视,但它需要列标题才能正常工作。我以前一直在导入一个完整的csv到熊猫DF,其中包括标题,所以这一切顺利,但现在我需要从数据库直接获得这些数据,所以我想,这很简单,我只是加入两个列表,嘿,普雷斯托我有什么我要找的,但当我试图附加我实际上结束了这个:

['name','address','phonenum',['Tom','dublin','12345'],['Bob','Kerry','56789']]

当我需要这个的时候

[['name','address','phonenum'],['Tom','dublin','12345'],['Bob','Kerry','56789']]

有什么想法吗? 非常感谢!你知道吗


Tags: 数据name标题列表address事情resultsbob
3条回答

其他可能性:

可以将其作为列表插入数据位置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']]

添加列表连接内容:

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完成。你知道吗

这就是你要找的吗?你知道吗

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

相关问题 更多 >