我有两个由管道分隔文件创建的人口统计数据和药物数据数据框:
demo='xxyy1046_demo.txt'
demog=pd.read_table(demo, delimiter='|', header=0)
demog.info()
med='xxyy1046_medication.txt'
meds=pd.read_table(med, delimiter='|', header=0)
meds.info() #n=2654
我现在想使用SQLalchemy在我可以选择,联接,group_by等的SQL表对象中转换这些数据框。
from sqlalchemy import create_engine, column, select, Table, Metadata
engine = create_engine('sqlite://', echo=False)
demog.to_sql('Demog_sql', con=engine)
metadata = sql.Metadata()
demog_sql = Table('Demog_sql', metadata, autoload=True, autoload_with=engine)
stmt = select([demog_sql.columns.FirstName])
print(stmt)
我得到结果: 选择“ Demog_sql”。“名字” 来自“ Demog_sql”
这不是我想要的!我希望能够使用选择语句,联接等操作数据。我在元数据步骤中做错了什么。我该如何解决?
答案 0 :(得分:1)
您正在打印语句对象本身的字符串表示形式。看来您想执行它。例如:
results = engine.execute(stmt).fetchall()
对于联接等,您将在语句上调用其他方法,最好在tutorial中进行解释,在继续之前应先阅读该方法。
在某些情况下,您不需要将数据上传到SQL进行联接等。Pandas can do those too在数据帧之间。