【发布时间】:2018-10-05 20:04:51
【问题描述】:
我想在pandas dataframe 中使用来自多个表的数据。我有 2 个从服务器下载数据的想法,一种方法是使用 SQL 加入和检索数据,另一种方法是单独下载数据帧并使用 pandas.merge 合并它们。
SQL 连接
当我想将数据下载到pandas时。
query='''SELECT table1.c1, table2.c2
FROM table1
INNER JOIN table2 ON table1.ID=table2.ID where condidtion;'''
df = pd.read_sql(query,engine)
熊猫合并
df1 = pd.read_sql('select c1 from table1 where condition;',engine)
df2 = pd.read_sql('select c2 from table2 where condition;',engine)
df = pd.merge(df1,df2,on='ID', how='inner')
哪个更快?假设我想对超过 2 个表和 2 个列执行此操作。
有没有更好的主意?
如果有必要知道我使用PostgreSQL。
【问题讨论】:
-
这取决于你的情况。如果为连接设置的条件减少了数据集的大小。我会选择 SQL 连接。因为它会减少您需要传输的数据。否则我会用一个大的数据集和监视器来测试它
-
想象一下没有行满足连接条件
table1.ID=table2.ID的情况。
标签: python sql postgresql pandas