遍历 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 += 1
和print(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