gpt4 book ai didi

python - 如何正确矢量化而不是迭代?

转载 作者:行者123 更新时间:2023-12-04 08:38:41 25 4
gpt4 key购买 nike

在 stackoverflow 上有一个非常流行的答案,你不应该遍历 Pandas 的数据帧:
https://stackoverflow.com/a/55557758/11826257
就我而言,我想从数据框的两列中获取值并创建一个 SQL 列表 INSERT INTO...与他们的声明。像这样:

import pandas as pd

df = pd.DataFrame({'velocity':[12,10,15], 'color':['blue','green','yellow']})

mylist = list()
for index, row in df.iterrows():
mylist.append('INSERT INTO mytable(velocity, color) VALUES (' + \
str(row['velocity']) + \
', "' + \
str(row['color']) + \
'");' )

[print(x) for x in mylist]
# INSERT INTO mytable(velocity, color) VALUES (12, "blue");
# INSERT INTO mytable(velocity, color) VALUES (10, "green");
# INSERT INTO mytable(velocity, color) VALUES (15, "yellow");
我知道我可以写这样的东西: [mylist.append('INSERT INTO mytable(velocity) VALUES ('+ str(x) + ');') for x in df["velocity"]]如果我只对一栏感兴趣。但这就是“矢量化”的意思吗?以及它如何适用于需要从 Pandas 数据框的每一行中提取两个项目的情况?

最佳答案

矢量化版本将是这样的,

queries = (
'INSERT INTO mytable(velocity, color) VALUES (' +
df['velocity'].astype(str) +
', "' +
df['color'].astype(str) +
'");'
)
print(queries.to_list())
输出
['INSERT INTO mytable(velocity, color) VALUES (12, "blue");',
'INSERT INTO mytable(velocity, color) VALUES (10, "green");',
'INSERT INTO mytable(velocity, color) VALUES (15, "yellow");']

高效插入数据库表
df[['velocity', 'color']].to_sql(
name='table_name',
con=engine,
schema='online',
index=False,
if_exists='append'
)

关于python - 如何正确矢量化而不是迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64665927/

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