我試圖用每個會話的唯一整數完成Sessions列,以便進一步處理。
一個會話由一天或從9:30-16:00的時間段來定義
符號 時間 開盤 最高 最低 收盤 成交量 LODs
2724312 AEHR 2019-09-23 09:31:00 1。 42 1.42 1.42 1.42 200 NaN NaN
2724313 AEHR 2019-09-23 09:43:00 1。 35 1.35 1.34 1.34 6062 NaN NaN
2724314 AEHR 2019-09-23 09:58:00 1. 35 1.35 1.29 1.30 8665 NaN NaN
2724315 AEHR 2019-09-23 09:59:00 1. 32 1.32 1.32 1.32 100 NaN NaN
2724316 AEHR 2019-09-23 10: 00: 00 1. 35 1.35 1.35 1.35 400 NaN NaN
... ... ... ... ... ... ... ...。
我已經嘗試了所有使用loop的方法,但是我一直得到書中的所有KeyError和SettingWithCopyWarning。
編輯:錯誤 & 代碼添加
SettingWithCopyWarning:
一個值正試圖被設定在一個資料框架的分片的副本上
參見注意事項。
請看檔案中的注意事項。 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self._setitem_single_block(indexer, value, name)
。
df = df
# Columns ['Symbol', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume', 'LOD', 'Sessions']/span>
# 添加日期列以回圈查看。
df['Date'] = pd.to_datetime(df['Time').dt.date
previous_session = df['Date'].iloc[0]
prev_sesh_count = 1 'Date'>.iloc[0]
for i, row in df.iterrows() 。
current_session = df['Date'].iloc[i] 。
if previous_session == current_session:
df['會話'].iloc[i] = prev_sesh_count
else:
df['Sessions'].iloc[i] = prev_sesh_count 1.
prev_sesh_count = prev_sesh_count 1.
uj5u.com熱心網友回復:
假設資料框架是按Date排序的,我們可以使用duplicated和cumsum來分配不合格的會話號碼
df['Sessions'] = (~df.diplicated(['符號', '日期']).cumsum()
print(df)
符號 時間 開盤 高點 低點 收盤 成交量 LOD 會議日期
2724312 AEHR 2019-09-23 09:31:00 1。 42 1. 42 1.42 1. 42 200 NaN 1 2019-09-23
2724313 AEHR 2019-09-23 09:43:00 1。 35 1. 35 1.34 1. 34 6062 NaN 1 2019-09-23
2724314 AEHR 2019-09-23 09:58:00 1. 35 1. 35 1.29 1. 30 8665 NaN 1 2019-09-23
2724315 AEHR 2019-09-23 09:59:00 1. 32 1. 32 1.32 1. 32 100 NaN 1 2019-09-23
2724316 AEHR 2019-09-23 10: 00: 00 1. 35 1.35 1.35 1. 35 400 NaN 1 2019-09-23
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/309994.html
標籤:
