我试图在函数中使用Pandas‘read_sql() (来自sqlalchemy),但是它一直返回字符串而不是DataFrame。
为什么会发生这种情况,以及如何解决?
当我做这样的事:
table_name = pd.io.sql.read_sql(table_name, con=engine)
一切都很完美。但是当我把同样的东西放在这样的函数里时:
def sql_reading(table_name, comment):
table_name = pd.io.sql.read_sql(table_name, con=engine)
print('\x1b[1;31m'+comment +'\x1b[0m')
table_name.info()
return table_name
它返回有关DataFrame的信息,但不允许我将结果用作DataFrame:
sql_reading(some_table_from_a_query, "Some comment")
Prints some_table_from_a_query.info(), everything is fine.
但是,当我试图打印出它的头部或尾部,或者在下一步按字面意思使用describe()时,它会返回一个错误:
some_table_from_a_query.info()
AttributeError: 'str' object has no attribute 'info'
UPD:返回table_name并没有产生任何影响。
希望你能解释一下为什么会发生这种情况,以及如何解决。
发布于 2021-06-27 21:12:43
您正在将字符串'table_name‘与实际的dataframe混淆,后者也称为'table_name’。这就是为什么字符串(table_name)没有属性'info‘的错误。尝试为表使用不同的变量名与使用dataframe,例如:
def sql_reading(table_name, comment):
df_table_name = pd.io.sql.read_sql(table_name, con=engine)
print('\x1b[1;31m'+comment +'\x1b[0m')
df_table_name.info()
return df_table_name
https://stackoverflow.com/questions/68116900
复制