简体   繁体   English

Python for 循环只存储最后一个值

[英]Python for loop storing only the last value

My code are scraping data from public site and storing in a df and saving as csv, but my code are not working well.我的代码正在从公共站点抓取数据并存储在 df 中并保存为 csv,但我的代码运行不正常。

    for ano in lista_ano:
     for distribuidora in lista_distribuidores:
      for mes in lista_mes:
        scraping = pd.read_html('https://www2.aneel.gov.br/aplicacoes/indicadores_de_qualidade/decFecSegMensal.cfm?mes={}&ano={}&regiao=SE&distribuidora={}&tipo=d'.format(mes,ano,distribuidora))
        dfs= pd.DataFrame(scraping[0])
        dfs.drop(dfs.tail(3).index,inplace=True)
        dfs.drop(dfs.head(2).index,inplace=True)
        dfs = dfs.assign(MES = '{}'.format(mes))
        dfs = dfs.assign(ANO = '{}'.format(ano))
        dfs = dfs.assign(DISTRIBUIDORA = '{}'.format(distribuidora))
        all_dfs = pd.DataFrame(dfs)
        all_dfs.to_csv('final_data.csv', encoding= 'utf-8')

My problem here is my all_dfs.to_csv are creating a new csv for each looping and not storing data in the same local.我的问题是我的 all_dfs.to_csv 正在为每个循环创建一个新的 csv 并且不在同一个本地存储数据。

You are overwriting the existing csv on each iteration.您将在每次迭代中覆盖现有的 csv。

To fix it, simply indicate that you want to append instead of write by要修复它,只需表明您想要 append 而不是 write by

all_dfs.to_csv('final_data.csv', encoding='utf-8', mode='a')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM