我正在从效率低下的列表列表循环中学习越来越多的关于python的知识,并且一直在学习numpy / pandas。

假设我有一个熊猫数据框df,例如:

| id | Year | Value |
---------------------
| 1  | 2015 | 1.00  |
| 1  | 2014 | 0.80  |
| 2  | 2015 | 1.10  |
| 3  | 2015 | 0.6   |


等等

现在,我将如何在python中有效地根据特定列中的值查询数据库,然后将查询到的值附加到新列中。现在我的代码看起来像这样

uIDs = set(df['id'])
uIDs = ",".join([str(x) for x in uIDs])

with dbconnection as con:
    data = con.execute("SELECT id, value2 FROM table WHERE ids IN ("+uIDs")")

for i in data.fetchall():
    df[df['id'] == i[0]]['newcol'] = i[1]


很抱歉代码中有任何错误,我正在打个头,举一个例子。

如您所见,我正在尝试从pandas数据框中提取所有唯一ID,从数据库中选择新值,然后迭代遍历它们以追加到数据框中的新列。

有没有更有效/高效/ pythonic的方法来做到这一点?如果您查看的不仅仅是3行,而是3,000或30,000行,这是最好的处理方法吗?

最佳答案

由于您要使用SQL样式的左连接,因此只需使用

pd.merge(df, data.fetchall(), on='id', how='left')

关于python - 有效地将新列从sqlite db添加到pandas数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38175724/

10-11 15:01
查看更多