多个查询结果到Pandas数据帧

问题描述 投票:0回答:1

我有一个循环数据库表的函数,并返回数据帧中的表名和计数

d = {}      
    for table in tables:
        a.execute('SELECT count(*) FROM {}'.format(table))
        for row in a.fetchall():
            key = table
            val = row[0]
            d[key] = val
    df = pd.DataFrame(list(d.items()), columns=['Source_Table', 'Source_Cnt'])

这工作正常,但我想修改select语句,使其看起来像这样,并返回1行,其中包含2列结果:

'SELECT
    COUNT(*) AS cnt,
    MAX(COALESCE(MODIFY_DT, CREATE_DT)) AS LAST_MODIFIED
FROM {}'.format(table)

然后我将它作为Source_Table,Source_Cnt,Source_Max_Date存储在数据帧中

当我尝试只向数据帧添加列名时,它不起作用:

df = pd.DataFrame(list(d.items()), columns=['Source_Table', 'Source_Cnt', 'Src_Max_Date'])

AssertionError: 3 columns passed, passed data had 2 columns

我认为这是我在d {}中存储密钥val的方式。它不允许> 1列,但我不确定。

python pandas dictionary
1个回答
0
投票

d.items()返回如下所示的列表。

[(键,(值)),...]

例如:-

>>> d={'A':[1,2],'B':[3,4]}
>>> d.items()
dict_items([('A', [1, 2]), ('B', [3, 4])])

所以它只有两列。这就是它返回错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.