遍历 for 循环并将检索到的数据保存在每个循环的唯一 csv 文件中 | Python

Posted

技术标签:

【中文标题】遍历 for 循环并将检索到的数据保存在每个循环的唯一 csv 文件中 | Python【英文标题】:Iterating through a for loop and saving the retrieved data in a unique csv file for each loop | Python 【发布时间】:2021-10-06 21:24:32 【问题描述】:

我是 python 新手,我正在尝试使用 for 循环检索股票数据,然后将该信息保存为数据框,然后保存为 .csv。基本上,我正在创建一个custom_stock_data 函数,它将传递ticker_list(包含股票代码)。然后我希望此列表中的每个项目都通过for 循环传递,以便可以将数据保存为变量ticker_data 中的数据框并将其保存为.csv。然后我 ticker_data += 1 移动到下一个 csv 文件(我不知道你是否可以这样做,欢迎任何帮助!)

这是代码:

def custom_stock_data (ticker):
    ticker_data = []
    for symbol in ticker:
        ticker_data = pd.DataFrame(get_data(symbol, start_date = "05/25/2021", end_date = "07/30/2021", interval = "1wk"))
        ticker_data.to_csv(r"C:\xampp\htdocs\estagio\data_.csv".format(symbol))
    ticker_data += 1
    print(ticker_data)

ticker_list = ["AMZN", "TSLA", "AAPL"]
custom_stock_data(ticker_list)

我也只获得了关于我的ticker_list(这将是 AAPL)的最后信息。如图所示,我似乎无法获得前两个股票代码的信息

谢谢!

【问题讨论】:

ticker_data 是一个数据框,为什么你认为ticker_data += 1 会转到下一个 csv 文件? 你在循环之外有print(ticker_data)。所以它只是打印最后一个值。 我明白了,所以也许我可以先做ticker_csv = [],然后再做ticker_csv = ticker_data.to_csv,然后再做ticker_csv +=1? 有点混乱,您的代码是否生成了三个具有不同名称(data_APPL)且只有 APPL 数据的 csv?) 【参考方案1】:

您可以删除ticker_data = []ticker_data += 1print(ticker_data)。 CSV 文件将在没有这 3 行的情况下生成,因为如果您只需要单独的 CSV,则无需将数据累积在列表中。

此外,您只获得AAPL(列表中的最后一个代码)的信息的一个可能原因是,函数get_data() 可能在某处硬编码了AAPL

【讨论】:

现在解决了,我在 for 循环之外打印了它,这使它检索到列表中的最后一项! :) 哦,我明白了,我以为您的 CSV 仅收集 AAPL 的数据,而不是单个符号的数据。感谢您的澄清。【参考方案2】:

有点令人困惑,我想这可以帮助您尝试调试问题,打印您正在使用的实际符号,并在保存 CSV 之前检查保存在列代码中的值,这不会解决但让我知道输出:

def custom_stock_data (ticker):
    ticker_data = []
    for symbol in ticker:
        print(f"Working with symbol")
        ticker_data = pd.DataFrame(get_data(symbol, start_date = "05/25/2021", end_date = "07/30/2021", interval = "1wk"))
        print(f"Value in CSV is ticker_data['ticker'].unique()")            
        ticker_data.to_csv(r"C:\xampp\htdocs\estagio \data_.csv".format(symbol))
    ticker_data += 1
    print(ticker_data)

ticker_list = ["AMZN", "TSLA", "AAPL"]
custom_stock_data(ticker_list)

【讨论】:

好主意,我也试试看!谢谢!【参考方案3】:

取出ticker_data = []。它没用,因为您在循环内重新分配了变量。

ticker_data += 1 不需要。 for symbol in ticker: 每次循环都会自动转到下一个符号。

如果您想查看每个数据帧,请将print(ticker_data) 放入循环中。

def custom_stock_data (ticker):
    for symbol in ticker:
        ticker_data = pd.DataFrame(get_data(symbol, start_date = "05/25/2021", end_date = "07/30/2021", interval = "1wk"))
        ticker_data.to_csv(r"C:\xampp\htdocs\estagio\data_.csv".format(symbol))
        print(ticker_data)

【讨论】:

谢谢!现在修好了!感谢大家的帮助:)

以上是关于遍历 for 循环并将检索到的数据保存在每个循环的唯一 csv 文件中 | Python的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历excel文件做一些事情并将它们保存到新文件夹python pandas

在 v-for 循环中单击时检索数据,然后循环遍历数据

在 R X 次中重复 for 循环并将每个值保存在向量中

在tkinter的treeview中的for循环中的每个父节点下添加子节点

如何加快递归搜索功能?

如何在我的 for 循环之外执行代码(需要等到循环完成从 Firebase 数据库中检索数据)?