python - 如何通过 for 循环中的 for 循环将列表附加到数据帧
问题描述
我制作了一个 for 循环,它使用股票代码列表来获取当日收盘价。收集后,我要求代码将数据存储在数据框中。这很好用,但是我无法创建一种一遍又一遍地附加数据帧的方法,这样我就剩下一个大数据帧了。有人可以帮忙吗?请注意,API 连接允许一定数量的调用 pr。分钟,所以如果呼叫失败应该有一个时间延长 - 我试图解释这一点。请看下面的代码:
C20 = ['AMBU-B.CPH','MAERSK-B.CPH']
df = pd.DataFrame()
def getdata(symbol_input):
for i in symbol_input:
try:
API_KEY = 'XXXXXXXXX' #MY API KEY
symbol = i #søg på google efter firmanavnet og "stock price". Tickeren er den der skal bruges
r = requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=' + i + '&apikey=' + API_KEY)
result = r.json()
AllData = result['Time Series (Daily)']
alldays = list(AllData.keys())
alldays.sort()
timeinterval = 10
days = alldays[len(alldays)-timeinterval:len(alldays)]
#print(days)
SymbolList = []
for i in range(timeinterval):
SymbolList.append(symbol)
#print(SymbolList)
StockPriceList = []
if (r.status_code == 200):
for i, day in enumerate(days):
result = r.json()
dataForAllDays = result['Time Series (Daily)']
dataForSingleDate = dataForAllDays[days[i]]
#print (days[i], dataForSingleDate['4. close'])
StockPriceList.append(dataForSingleDate['4. close'])
#print(StockPriceList)
combined_lists = list(zip(days, StockPriceList, SymbolList)) #create tuples to feed into dataframe from multiple lists
df1 = pd.DataFrame(combined_lists, columns = ['Date', 'Price', 'Stock Ticker'])
print(df1)
time.sleep(10)
except:
print('could not get data for: ' + i)
time.sleep(1) # wait for 1 seconds before trying to fetch the data again
continue
打印(获取数据(C20))
解决方案
您可以使用 pd.concat ,然后使用临时数据框将所有内容连接到一个最终数据框中。
您可以使用此代码作为示例,将两个不同的数据帧连接成一个最终数据帧。
dataset1 = pd.DataFrame([[1,2],[2,3],[3,4]],columns=['A','B'])
dataset2 = pd.DataFrame([[4,5],[5,6],[6,7]],columns=['A','B'])
full_dataset = pd.concat([dataset1,dataset2])
full_dataset
A B
0 1 2
1 2 3
2 3 4
0 4 5
1 5 6
2 6 7
参考:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html
让我知道您是否需要其他任何东西。祝你有美好的一天!
推荐阅读
- c++11 - 如何将具有 var 长度的编译时数组传递给构造函数?
- unity3d - 如何解决以下问题?
- reactjs - 不变违规:元素类型无效:期望字符串或类/函数但得到:对象-可能的 Babel 问题
- css - CSS 访问链接
- java - 没有自定义工具栏的 ActionBarDrawerToggle
- python - 永久删除 Anaconda 和 Jupyter
- android - 未调用 BroadcastReceiver (Kotlin)
- cassandra - 以编程方式访问 cassandra nodetool API
- javascript - 删除动态生成的行
- swift - RxSwift:使用 DisposeBag 的最佳实践是什么?