【问题标题】:Return DataFrame from within python function rather than list using pandas' pd.read_sql_query从 python 函数中返回 DataFrame,而不是使用 pandas 的 pd.read_sql_query 列表
【发布时间】:2020-01-14 18:07:38
【问题描述】:

我很难理解为什么这会返回一个包含 DataFrame 而不仅仅是 DataFrame 的列表。代码或仅返回 DataFrame 的方法有问题吗?如果没有放在函数中,它会按预期工作。

import sqlite3
import pandas as pd

def get_tbl_info(db ='MyDatabase', table ='Measurements'):

        database = "/Users/Mary/Documents/Database/{DB}.db"..format(DB=db)

        conn = sqlite3.connect(database)

        tbl_info_command = "PRAGMA TABLE_INFO({table});".format(table=table)
        result_all = pd.read_sql_query(tbl_info_command,conn)
        print(type(result_all))
        return [result_all]



out = get_tbl_info()
print(type(out))

给予:

<class 'pandas.core.frame.DataFrame'>
<class 'list'>

【问题讨论】:

  • 因为您通过方括号将其作为列表返回:return [result_all]。试试return result_all

标签: python sql pandas sqlite dataframe


【解决方案1】:

因为当你用方括号[ ] 括起一个变量时,Python 将其理解为“ok put this variable inside a list”。只需将函数的 return 替换为:

return result_all

这应该可以正常工作,或者实际上您的函数可以直接返回您的数据框

return pd.read_sql_query(tbl_info_command,conn)

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 2018-01-01
    • 2022-12-09
    • 2018-11-18
    • 1970-01-01
    • 2017-09-11
    • 2014-03-17
    • 2021-08-16
    相关资源
    最近更新 更多