如何使用熊猫read_csv创建循环?
我需要创建一个数据循环以列出并保存到数据库。
如何使用csv中的数据执行此循环?
谢谢大家的关注
produtos = pd.read_csv('tabela.csv', delimiter=';')
for produto in produtos:
print(produto['NOME'])
答案 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'。