【问题标题】:How can i append a list to a dataframe via for loop in a for loop如何通过 for 循环中的 for 循环将列表附加到数据帧
【发布时间】:2020-04-25 08:47:23
【问题描述】:

我创建了一个 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))

【问题讨论】:

    标签: python python-3.x dataframe for-loop append


    【解决方案1】:

    您可以使用 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

    如果您还有其他需要,请告诉我。祝你有美好的一天!

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2016-01-31
      • 2016-12-19
      • 2020-10-14
      • 2015-04-05
      • 2020-07-26
      • 2017-10-21
      • 2020-02-27
      • 2019-10-15
      相关资源
      最近更新 更多