Python 如何从包含CSV数据的ResultProxy对象检索数据帧?
我有一个数据帧对象,我首先将其转换为CSV:Python 如何从包含CSV数据的ResultProxy对象检索数据帧?,python,pandas,dataframe,sqlalchemy,Python,Pandas,Dataframe,Sqlalchemy,我有一个数据帧对象,我首先将其转换为CSV: valsCSV = vals.to_csv() #where vals is a dataframe with a single row 然后,我使用SQLAlchemy将此VALSV插入到表的“userdata”列中,如下所示: sqlStatement = "INSERT INTO "+ tablename + "(username, userdata) VALUES ('"+testName+"', '"+ valsCSV +"')" con
valsCSV = vals.to_csv() #where vals is a dataframe with a single row
然后,我使用SQLAlchemy将此VALSV插入到表的“userdata”列中,如下所示:
sqlStatement = "INSERT INTO "+ tablename + "(username, userdata) VALUES ('"+testName+"', '"+ valsCSV +"')"
connection.execute(sqlStatement)
sqlStatement = "SELECT userdata FROM " + tablename + " WHERE username='" + username +"';"
rs = dbConnection.execute(sqlStatement) #where rs will be a ResultProxy object
然后,为了检索数据,我执行一个查询,返回ResultProxy对象,如下所示:
sqlStatement = "INSERT INTO "+ tablename + "(username, userdata) VALUES ('"+testName+"', '"+ valsCSV +"')"
connection.execute(sqlStatement)
sqlStatement = "SELECT userdata FROM " + tablename + " WHERE username='" + username +"';"
rs = dbConnection.execute(sqlStatement) #where rs will be a ResultProxy object
目的是在检索ResultProxy对象并获得初始数据帧后反转此过程
备注:开始时,我使用一行数据框的原因是解决方案特定。一旦从查询中获取CSV字符串,您可以使用
io.StringIO
获取pd.read\u CSV
将其转换回数据框:
import pandas as pd
from io import StringIO
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
res = df.to_csv(None, index=False)
df2 = pd.read_csv(StringIO(res))
print(df2)
收益率:
a b
0 1 4
1 2 5
2 3 6
从查询中获取CSV字符串后,可以使用
io.StringIO
获取pd.read\u CSV
将其转换回数据帧:
import pandas as pd
from io import StringIO
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
res = df.to_csv(None, index=False)
df2 = pd.read_csv(StringIO(res))
print(df2)
收益率:
a b
0 1 4
1 2 5
2 3 6
虽然我找到了一个适合我的场景的不同解决方案,但我将对此进行投票,因为这是一个可行的解决方案。起初我确实尝试过这种方法,但如果没有按如下方式将行条目编入索引,我似乎无法使其工作:retrievedString=rs[I][0]35;其中我是行索引,然后我按照建议继续使用read_csv(StringIO(res))(我为另一个我现在找不到的问题找到了类似的解决方案)。如果你是那个提出解决方案的人,我就投赞成票。如果你认为这是一个潜在的重复,让我知道,我会删除这个。虽然我想出了一个不同的解决方案,适用于我的场景,我会投票,因为这是一个可行的解决方案的问题。起初我确实尝试过这种方法,但如果没有按如下方式将行条目编入索引,我似乎无法使其工作:retrievedString=rs[I][0]35;其中我是行索引,然后我按照建议继续使用read_csv(StringIO(res))(我为另一个我现在找不到的问题找到了类似的解决方案)。如果你是那个提出解决方案的人,我就投赞成票。如果你认为这是一个潜在的重复,让我知道,我会删除这个。