我在資料框中標記行時遇到問題。這個想法是我想知道當前(迭代)值乘以小浮點數是否高于資料框中接下來的 60 行中的任何一行。
我已經找到了一個可行的解決方案,但不幸的是速度很慢。我試圖用 .apply 和串列??理解來做到這一點,但失敗了。
代碼如下所示:
for i in range(df.shape[0] - 1):
label.append((df.iloc[i 1:window i]['value'] > df.iloc[i]['value'] * small_threshold).any())
所以基本上假設我有這個df
| 編號 | 價值 |
|---|---|
| 0 | 2.00 |
| 1 | 2.01 |
| 2 | 1.98 |
| 3 | 2.01 |
| 4 | 2.02 |
我想針對接下來的 3 行標記每一行。為了更容易,我將跳過當前行值的乘法。所以目標是如果任何值高于當前值,則將行標記為 True,如果沒有值則標記為 False(相對于接下來的 3 行)
| 編號 | 價值 | 標簽 |
|---|---|---|
| 0 | 2.00 | 真的 |
| 1 | 2.01 | 真的 |
| 2 | 1.98 | 錯誤的 |
| 3 | 2.01 | 鈉 |
| 4 | 2.02 | 鈉 |
uj5u.com熱心網友回復:
在你的情況下檢查rolling
df['new'] = df.value.shift(-1).iloc[::-1].rolling(3).max().ge(df.value)
Out[56]:
0 True
1 True
2 False
3 False
4 False
Name: value, dtype: bool
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481548.html
上一篇:python中的這種操作是否為我效率極低的程式節省了更多時間?
下一篇:MySQL外鍵和性能影響
