【问题标题】:how to substitute value in url from value in list and use FOR loop to loop thru them all如何用列表中的值替换 url 中的值并使用 FOR 循环遍历它们
【发布时间】:2021-04-24 10:14:29
【问题描述】:

我试图弄清楚如何用列表中的其他交换替换我的代码中字符串中的“BATS”,并循环遍历它们以在一个 python 脚本中获取股票数据,而不是硬编码和创建多个单独的文件。 此外,希望根据正在解析的任何交换,使用相同的逻辑替换生成的本地 .csv 文件 (BATS_2021-01-19.csv) 的值。这是我的代码。

import pandas as pd
import time
import os
import datetime


datetime = datetime.datetime.today().strftime('%Y-%m-%d')
exchanges = ["BATS","US","SG","LSE","V","TSE"]

df = pd.read_csv('https://eodhistoricaldata.com/api/eod-bulk-last-day/BATS?api_token=5f1343ba20.00275101&date=' + str(datetime))


Ticker = df['Code']
Date = df['Date']
Open = df['Open'].round(2)
High = df['High'].round(2)
Low = df['Low'].round(2)
Close = df['Adjusted_close'].round(2)
Volume = df['Volume']

total_df = pd.concat([Ticker, Date, Open, High, Low, Close, Volume],
                 axis=1, keys=['Ticker','Date','Open','High','Low','Close','Volume'])

filename = "BATS_"+(datetime)+".csv"

path = 'H:/EOD_DATA_RECENT/DOWNLOADS/'
full_path = os.path.join(path, filename)
total_df.to_csv(full_path, index=False)

print(total_df.head(5))

【问题讨论】:

    标签: python pandas list url


    【解决方案1】:

    您使用字符串格式来指定 url 中的数据,同时遍历您的交换。

    在您的字符串引号之前放置一个f 将允许您通过用{} 包围变量名称将变量直接输入到字符串中

    for ex in exchanges:
        print(f'https://eodhistoricaldata.com/api/eod-bulk-last-day/{ex}?api_token=5f1343ba20.00275101&date={str(datetime)}')
    
        
    https://eodhistoricaldata.com/api/eod-bulk-last-day/BATS?api_token=5f1343ba20.00275101&date=2021-01-20
    https://eodhistoricaldata.com/api/eod-bulk-last-day/US?api_token=5f1343ba20.00275101&date=2021-01-20
    https://eodhistoricaldata.com/api/eod-bulk-last-day/SG?api_token=5f1343ba20.00275101&date=2021-01-20
    https://eodhistoricaldata.com/api/eod-bulk-last-day/LSE?api_token=5f1343ba20.00275101&date=2021-01-20
    https://eodhistoricaldata.com/api/eod-bulk-last-day/V?api_token=5f1343ba20.00275101&date=2021-01-20
    https://eodhistoricaldata.com/api/eod-bulk-last-day/TSE?api_token=5f1343ba20.00275101&date=2021-01-20
    

    您还应该重命名您的 datetime 变量,因为在声明该变量后您将无法再次使用 datetime

    datetime.datetime.now()
    Traceback (most recent call last):
      File "<pyshell#18>", line 1, in <module>
        datetime.datetime.now()
    AttributeError: 'str' object has no attribute 'datetime'
    

    【讨论】:

    • 非常感谢。你能想出一种方法来命名我正在写入的本地文件 - 以匹配当时正在查询的交换吗?
    • 您可以使用每个相同的功能。 filename = f"{ex}_{str(datetime)}.csv"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2019-01-15
    • 2012-09-02
    • 2021-04-02
    • 2016-03-08
    相关资源
    最近更新 更多