【问题标题】:joining a list and a list of lists in python在python中加入列表和列表列表
【发布时间】:2015-10-07 02:07:09
【问题描述】:

我有一个应该很简单的问题,但是尝试了 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']]

任何人有什么想法吗? 非常感谢!

【问题讨论】:

  • 您可以通过 pd.read_sql_query("select name, address, phonenum from contacts", conn) 将其作为 Dataframe 获取。

标签: python mysql list pandas pymysql


【解决方案1】:

添加列表连接内容:

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

请注意,使用来自数据库的数据加载 DataFrame 也可以使用 pandas.read_sql 完成。

【讨论】:

    【解决方案2】:

    这就是你要找的吗?

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

    【讨论】:

      【解决方案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']]
      

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 2013-01-26
        • 2018-03-15
        • 1970-01-01
        • 2020-03-27
        • 1970-01-01
        • 2013-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多