最终输出未反映在 csv 中,需要修复数据框中的输出

final output was not reflecting in csv, Need to fix output in data frame

问题 - 我需要从给定的 link 中获取数据并保存为 csv 格式。所需数据是价格、前收盘价、代码。

我是初学者,不会数据框,能不能帮我参考一下代码。

任何其他替代方法也可以。

#input data was given below
tikcer  = ['msft','amd','aapl']

期望输出格式-

A B C
0 261.5 266.82 MSFT
1 94.24 102.47 AMD
2 145.54 149.24 AAPL

我得到这个输出 -

A B C
0 145.54 149.24 AAPL

我的测试代码

import json
import requests
#import pyuser_agent
import pandas as pd
#ua = pyuser_agent.UA()
#headers = {'User-Agent': ua.random }
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)' }
tikcer  = ['msft','amd','aapl']
for i in tikcer:
  print(i)
  url = f"https://query1.finance.yahoo.com/v8/finance/chart/{i}"
  response = requests.get(url, headers=headers)
  print("API is working. status code :" + str(response.status_code))
  datas = json.loads(response.text)
  for value in datas['chart']['result']:
    print(value)
    a = value['meta']['previousClose']
    b = value['meta']['regularMarketPrice']
    c = value['meta']['symbol']
    print(a,b,c)
    data = {'A': a, 'B': b, 'C': c}
    df = pd.DataFrame.from_dict([data])
    df.to_csv('data3.csv')
    #df = pd.DataFrame.from_dict({'A': [a], 'B': [b], 'C': [c]})
    #df.to_csv('data1.csv')

开始时,创建了一个包含 NaN 值(空)的数据框。 在循环中,每个单元格都被填充,其中 df.loc[i, 'A'],i 是行的索引(左侧),'A' 是列名。 此外,使用范围更改循环以通过 i.

访问索引
import json
import requests
#import pyuser_agent
import pandas as pd
#ua = pyuser_agent.UA()
#headers = {'User-Agent': ua.random }
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)' }
tikcer  = ['msft','amd','aapl']
df = pd.DataFrame(index=[0, 1, 2], columns=['A', 'B', 'C'])

for i in range(0,len(tikcer)):
  print(tikcer[i])
  url = f"https://query1.finance.yahoo.com/v8/finance/chart/{tikcer[i]}"
  response = requests.get(url, headers=headers)
  print("API is working. status code :" + str(response.status_code))
  datas = json.loads(response.text)
  df.loc[i, 'A'] = datas['chart']['result'][0]['meta']['previousClose']
  df.loc[i, 'B'] = datas['chart']['result'][0]['meta']['regularMarketPrice']
  df.loc[i, 'C'] = datas['chart']['result'][0]['meta']['symbol']


print(df)

输出

        A        B     C
0   266.2   255.34  MSFT
1  102.47    96.89   AMD
2  149.24  141.809  AAPL