gpt4 book ai didi

python - 有效地将新列从 sqlite db 添加到 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:31 27 4
gpt4 key购买 nike

我对 python 的了解越来越多,从效率较低的列表列表循环开始,一直在学习 numpy/pandas。

假设我有一个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com