如何使用熊猫read_csv创建循环?

时间:2019-02-19 02:48:21

标签: python python-3.x pandas

如何使用熊猫read_csv创建循环?

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

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

谢谢大家的关注

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

3 个答案:

答案 0 :(得分:1)

要在通过调用大熊猫read_csv而导致的DataFrame中进行迭代,应使用命令iterrows()进行迭代,如下例所示:

for produto in produtos.iterrows():
    print(produto['NOME'])

答案 1 :(得分:1)

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

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()的更多信息,并查看this answer

答案 2 :(得分:0)

如果您可以按列名称使用熊猫创建循环:

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'。