簡體   English   中英

Python數據框將多數據框放入單個數據框

[英]Python DataFrames putting multipule dataframes into a single Data Frame

導入所需的模塊

import pandas.io.data as web
import datetime
import pandas as pd
import matplotlib.pyplot as plt
# Enable inline plotting
%matplotlib inline

設置日期范圍和股票的股票代碼

start = datetime.datetime(2016, 1, 1)
end = datetime.datetime.now()
Stock_List = ('BHP.Ax','AMP.AX','PRR.AX')
Stock_Code = "BHP.AX"
df_Stock_Code = pd.DataFrame()
Results = pd.DataFrame()

通過代碼循環並獲取數據

for Stock_Code in Stock_List:
     #Queries yahoo website for asx code froma start and end date
     f = web.DataReader(Stock_Code, 'yahoo', start, end)
     f['Stock_Code'] = Stock_Code 
     df_Stock_Code = f

將所有數據幀連接到on,但是由於某種原因失敗

Results = [Results,df_Stock_Code] 

df_Results = pd.Concat(Results)

在原始代碼中, df_Stock_Code被視為數據幀列表。 但是,在for loop ,將當前數據幀分配給它,而不是將最新數據幀附加到它。

結果是,在串聯步驟中, df_Stock_Code只是一個單個數據幀,引用了Stock_List的最后一個庫存。 Results也從未在循環中使用,它只是從開始初始化時起的空數據框。

嘗試以下方法:

start = datetime.datetime(2016, 1, 1)
end = datetime.datetime.now()
Stock_List = ('BHP.Ax','AMP.AX','PRR.AX')
Stock_Code = "BHP.AX"
df_Stock_Code = pd.DataFrame()
Results = []

for Stock_Code in Stock_List:
    #Queries yahoo website for asx code froma start and end date
    f = web.DataReader(Stock_Code, 'yahoo', start, end)
    f['Stock_Code'] = Stock_Code 
    df_Stock_Code = Results.append(f)

df_Results = pd.concat(Results)
print df_Results

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM