分组每一组数据最开始添加一行,内容与每组第二行一致
生活随笔
收集整理的這篇文章主要介紹了
分组每一组数据最开始添加一行,内容与每组第二行一致
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
量化工作中經常遇到的一個問題:有每一天以每分鐘為顆粒度的交易數據,但是每天的9:30沒有數據,需要每一天添加一個9:30的數據,開盤和收盤價格等于9:31的數據。
因為數據量非常大,人工每天手動添加不僅耗時耗力,而且容易出錯。本文記錄下使用Excel和Python處理實際工作中這類問題的方法。
Excel處理
Excel處理思路:首先要保證每一天開始時添加一個空白行,然后空白行數據等于下一行數據內容。
- 使用IF函數和FIND函數等將9:31的數據一行標記為1,=IF(ISERROR(FIND("09:31:00",A3)),"",1)
- 公式無法直接查找,將biaoji這一列復制為值
- 選中biaoji列,查找和選擇中有"定位條件"(快捷鍵Ctrl+G),選擇常量選中這一列標記為1的行
- 選中了標記1的所有行,鼠標右擊插入整行
- 數值填充列(close,open列)一樣邏輯:選中整列,Ctrl+G定位空值,輸入公式=C3(下一行),Ctrl+Enter全部填充
- 時間time列進行處理
示例:
上證50分鐘漲跌幅數據
Python處理
import pandas as pddf = pd.read_excel('上證50分鐘漲跌幅數據.xlsx')df['date'] = pd.to_datetime(df['time'],format='%Y-%m-%d') from datetime import datetime df['date_'] = df['time'].apply(lambda x:datetime.strptime(x[:10],'%Y-%m-%d')) #dataframe分組并在每一組第一行前創建新行,其他字段數值填充為第一行數值,日期減少一分鐘 def augment_group(group):first_row = group.iloc[[0]]first_row['date'] -= pd.Timedelta(minutes=1) return first_row.append(group)#df['Date'] = pd.to_datetime(df['Date'], errors='coerce') (df.groupby('date_', as_index=False, group_keys=False).apply(augment_group).reset_index(drop=True))總結
以上是生活随笔為你收集整理的分组每一组数据最开始添加一行,内容与每组第二行一致的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器不显示ipv4信息,【已经解决】i
- 下一篇: 【STM32G431RBTx】备战蓝桥杯