3

如何使用 pandas read_csv 创建循环?

我需要创建一个数据循环来列出并保存到数据库中。

如何使用 csv 中的数据执行此循环?

谢谢大家的关注

produtos = pd.read_csv('tabela.csv', delimiter=';')
        for produto in produtos:
            print(produto['NOME'])
4

3 回答 3

4

要在调用 pandas 产生的 DataFrame 中进行迭代,read_csv您应该使用命令iterrows()进行迭代,如下例所示:

for produto in produtos.iterrows():
    print(produto['NOME'])
于 2019-02-19T02:56:14.427 回答
3

如果您有需要保存的文件,我建议您这样做

import os
import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('sqlite://', echo=False)
path = "C:/path/to/directory"

# list all files in the directory, assuming this directory 
# contains only files csv files that you need to save 
for file in os.listdir(path):
    df = pd.read_csv(path+file)
    # some other data cleaning/manipulation

    # write dataframe to database
    df.to_sql("table_name", con=engine)

或者,您可以创建一个包含所有文件位置的列表,然后遍历该位置。有关to_sql()的更多信息并查看此答案

于 2019-02-19T03:18:35.863 回答
0

如果您可以按列名使用 Pandas 创建循环:

produtos = pd.read_csv('tabela.csv', delimiter=';')
for i, produto in produtos.iterrows():
    print(produto['NOME'])

但是,如果您想直接在数据库中插入,请使用 sqlalchemy 和函数 to_sql,如下所示:

from sqlalchemy import create_engine
import pandas as pd
...
engine = create_engine("mysql://user:pwd@localhost/database")
produtos = pd.read_csv('tabela.csv', delimiter=';')
if_exists_do = 'append'
produtos.to_sql('table_name', con=engine, if_exists=if_exists_do)

然后它将被插入到数据库中。如果需要,var 'if_exists_do' 可以接收值 'replace'。

于 2020-07-10T14:09:50.443 回答