我正在嘗試自動化交易策略。我正在使用 Angelbroking 股票市場 API 創建實時資料框。
我使用的 API 只獲取不包括日期的高低收盤值。因此,我將 Python 時間程式與 API 混合使用以獲取當前日期時間和 OHLC 值。以下是我正在處理的代碼-
while (True):
#below code fetches current date and time
IST = pytz.timezone('Asia/Kolkata')
datetime_ist = datetime.now(IST)
Datetime=datetime_ist.strftime('%Y/%m/%d %H:%M:%S')
#API to fetch last traded price(LTP)of a stock
exchange = "NSE"
tradingsymbol = "SBIN-EQ"
symboltoken = 3045
a=SmartApi.ltpData("NSE", "SBIN-EQ", "3045")
#creating datetime and LTP DataFrames
df = pd.DataFrame([a['data']])
df1= pd.DataFrame([Datetime])
df1.columns = ['Datetime']
#joining both DataFrames
df2 = pd.concat([df1, df])
加入 DataFrames df 和 df1 后,我在兩行中都得到了 Nan 值,如下圖所示-
加入DataFrames.jpg后
因此,我嘗試對資料進行分組以洗掉 Nan 值。
#Grouping the data
df3=df2.groupby('Datetime').max().reset_index()
display(df3)
現在,對日期時間進行分組只輸出日期時間并在 OHLC 列中顯示 Nan 值,當我對 OHLC 列進行分組時,我在日期時間列中得到 Nan,如下所示
日期時間分組.jpg
作為 python 的初學者,我無法理解我錯過了什么或做錯了什么。
uj5u.com熱心網友回復:
您似乎正在嘗試將相同長度的日期時間列附加到 OHLC 資料幀。axis=0用于行而axis=1用于列。默認情況下,pandas 使用axis=0,因此您需要將首選更改指定為axis=1。
嘗試將您的 concat 更改為:
df2 = pd.concat([df1, df], axis=1)
在您獲得的情況下InvalidIndexError:
pd.concat([df1.reset_index(), df], axis=1)
另一種方法是簡單地使用join():
df.join(df1)
忠告:在使用之前join()或concat()嘗試從 2 個不同的資料幀生成資料幀時重置索引是一種很好的做法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347398.html
上一篇:合并兩個帶有id的資料幀
