我有 2 個資料幀
A) 更大的時間范圍時間序列(15 行 * 2 列)
value time_point
0 NaN 2020-11-23T00:00:00Z
1 352.111111 2020-11-24T00:00:00Z
2 352.588888 2020-11-25T00:00:00Z
3 352.866663 2020-11-26T00:00:00Z
4 352.583333 2020-11-27T00:00:00Z
5 352.420000 2020-12-01T00:00:00Z
6 354.473333 2020-12-02T00:00:00Z
7 356.766667 2020-12-03T00:00:00Z
8 358.540000 2020-12-04T00:00:00Z
9 359.133333 2020-12-07T00:00:00Z
10 360.946667 2020-12-08T00:00:00Z
11 360.636667 2020-12-09T00:00:00Z
12 359.086667 2020-12-10T00:00:00Z
...
...
B) 粒度時間序列(任意行 * 2 列)
value time_point
0 111 2020-11-23T00:01:00Z
1 111 2020-11-23T00:02:00Z
2 111 2020-11-23T00:03:00Z
3 111 2020-11-23T00:04:00Z
4 111 2020-11-23T00:05:00Z
5 111 2020-11-24T00:01:00Z
6 111 2020-11-24T00:02:00Z
7 111 2020-11-24T00:03:00Z
8 111 2020-11-24T00:04:00Z
9 111 2020-11-24T00:05:00Z
10 111 2020-11-25T00:01:00Z
11 111 2020-11-25T00:02:00Z
12 111 2020-11-25T00:03:00Z
13 111 2020-11-25T00:04:00Z
14 111 2020-11-25T00:05:00Z
...
...
120 111 2020-12-01T00:00:00Z
最后結果
value time_point -2_days_prior_value
0 111 2020-11-23T00:01:00Z NaN (larger timeframe has no value for 21st Nov, 2020)
1 111 2020-11-23T00:02:00Z NaN
2 111 2020-11-23T00:03:00Z NaN
3 111 2020-11-23T00:04:00Z NaN
4 111 2020-11-23T00:05:00Z NaN
5 111 2020-11-24T00:01:00Z NaN
6 111 2020-11-24T00:02:00Z NaN
7 111 2020-11-24T00:03:00Z NaN
8 111 2020-11-24T00:04:00Z NaN
9 111 2020-11-24T00:05:00Z NaN
10 111 2020-11-25T00:01:00Z NaN (23rd Nov in the larger timeframe has NaN. Hence the same)
11 111 2020-11-25T00:02:00Z NaN
12 111 2020-11-25T00:03:00Z NaN
13 111 2020-11-25T00:04:00Z NaN (just 4 entries on 25th Nov instead of 5)
14 111 2020-11-26T00:01:00Z 352.111111 (taken from previous larger timeframe 24th Nov, 2020)
...
...
120 111 2020-12-01T00:00:00Z 352.866663 (taken from larger timeframe 26th Nov, 2020)
我通常做的是
- 將資料幀值移動 2 行(相當于 -2)
- 獲取相關系列(迭代比系列更快,而不是資料幀)
- 創建一個新的空串列來存盤結果
-2_days_prior_value - 回圈較小的時間范圍(更多行)并在較大的時間范圍內查找相應的日期,如果日期匹配,則將結果附加到新串列中。
這些操作變得非常頻繁。我知道某些 Pandas 結構,但它們要么效率低下,要么不適合我的用例。
Resampling. 過去使用過它,但我無法將其應用于我的問題。- 使用
loc或替換np.where。我將不得不呼叫操作n次數n = len(larger timeframe) - 我只是無法均勻地復制/外推,因為較小的時間范圍可能有不規則的倍數。
Pandas 中的任何內置函式或通用 Pythonic 解決方案可以幫助我更快地計算相同的結果和/或使用更少的代碼行,或者我是否已經在正確的道路上?
uj5u.com熱心網友回復:
你能不能代替
從第二個資料幀中減去 1 分鐘
將其與第一個資料框右連接
將 2 天 1 分鐘添加到已連接列中的時間列
這是否實作了您想要做的事情?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341068.html
上一篇:生成亂數的函式呼叫其他用種子生成亂數的函式,種子好像又被用了
下一篇:python中帶權重的隨機洗牌
