我的代码是
import pandas as pd
import yahoo_fin.stock_info as si
data = {'Symbols': ['ADANIPORTS.NS','ASIANPAINT.NS','AXISBANK.NS','BAJAJ-AUTO.NS','BAJAJFINSV.NS','BAJFINANCE.NS','BHARTIARTL.NS','TCS.NS']}
nifty10= pd.DataFrame(data)
nifty10['Symbols']
for symbol in nifty10['Symbols']:
filename = symbol.strip('.NS') #removing .NS and creating a file name so that I can use symbol as filename
filename = si.get_data(symbol)
最后,我想要4个对象ADANIPORTS、ASIANPAINT、AXISBANK、TCS,其中包含si.get_data.返回的值
我反复遍历符号,并将每个符号名称保存为文件名,以便以后使用。然后我通过API传递Symbol,返回一个具有多行和多列的数据帧。
我想把这个输出存储在一个数据帧中,并用我在最后一行第2行创建的文件名/符号来命名数据帧。
但最后一行的数据帧被保存为文件名,简而言之,python没有采用文件名,在这种情况下,第一行的Adaniport将用于第二行的Asianpaints,依此类推
工作原理-vars()[filename] = si.get_data(symbol)
你可以这样做:
import pandas as pd
import yahoo_fin.stock_info as si
data = {'Symbols': ['ADANIPORTS.NS','ASIANPAINT.NS','AXISBANK.NS','TCS.NS']}
nifty10= pd.DataFrame(data)
for symbol in nifty10['Symbols']:
filename = symbol.strip('.NS')
vars()[filename] = si.get_data(symbol)
但我建议把它们放在字典里:
si_data = {}
for symbol in nifty10['Symbols']:
filename = symbol.strip('.NS')
si_data[filename] = si.get_data(symbol)
si_data['AXISBANK'].head()
open high low close adjclose volume ticker
1998-11-27 3.55 3.55 2.71 3.40 0.416105 21000.0 AXISBANK.NS
1998-11-30 3.25 3.30 3.10 3.21 0.392852 132000.0 AXISBANK.NS
1998-12-01 3.29 3.46 3.22 3.39 0.414881 123500.0 AXISBANK.NS
1998-12-02 3.36 3.44 3.32 3.39 0.414881 75500.0 AXISBANK.NS
1998-12-03 3.44 3.49 3.37 3.39 0.414881 102000.0 AXISBANK.NS