我正在嘗試創建一個新列,其中包含同一資料幀中幾個月范圍內的 MAX 值
我希望“最大值”中的新列具有下 12 個月的最大值(如果月份是“10 月 20 日”,則開始在“11 月 20 日”中查找最大值),如果資料小于 4,則填寫“0”月份如下:
| ID | 月 | 價值 | 最大值 |
|---|---|---|---|
| 0001 | 10 月 20 日 | 0 | 5 |
| 0001 | 11 月 20 日 | 2 | 5 |
| 0001 | 12 月 20 日 | 3 | 5 |
| 0001 | 1 月 21 日 | 4 | 5 |
| 0001 | 2月21日 | 5 | 5 |
| 0001 | 3 月 21 日 | 5 | 5 |
| 0001 | 4月21日 | 5 | 5 |
| 0001 | 5 月 21 日 | 5 | 5 |
| 0001 | 6 月 21 日 | 5 | 0 |
| 0001 | 7 月 21 日 | 5 | 0 |
| 0001 | 8 月 21 日 | 5 | 0 |
| 0001 | 9 月 21 日 | 5 | 0 |
或者在 mySQL 上有另一個解決方案?
我試圖創建“最大值”列
max_v = 0
llist = []
max_values = []
for j in range(len(df_uid)):
try:
for i in range(len(df_uid)):
val = (df_uid['DPD_BCK'].iloc[i 1])
if val > max_v:
max_v = val
llist.append(max_v)
except IndexError:
pass
max_values.append(max(llist))
輸出:
max_values = [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
但我想要 max_values = [5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0]
uj5u.com熱心網友回復:
我假設您正在使用名為df_uid. 此代碼回圈遍歷 DataFrame。如果有超過 4 個可用專案,它會在接下來的 12 個專案中搜索最大值,除非可用專案不多,然后在最后一個可用專案中找到它。
因為在問題的表格中看不清楚,我添加了一個隨機初始化串列作為“DPD_BCK”專案。
import numpy as np
import pandas as pd
np.random.seed(32)
df_uid = pd.DataFrame({'Month':
['Oct-20', 'Nov-20', 'Dec-20', 'Jan-21', 'Feb-21', 'Mar-21',
'Apr-21', 'May-21', 'June-21', 'July-21', 'Aug-21', 'Sep-21']})
df_uid['DPD_BCK'] = np.random.randint(0,20,size=len(df_uid))
max_values = []
for j in range(len(df_uid)):
if j > len(df_uid)-4:
max_values.append(0)
else:
try:
max_values.append(max(df_uid['DPD_BCK'][j:j 12]))
except ValueError:
max_values.append(max(df_uid['DPD_BCK'][j:]))
df_uid['Max Value'] = max_values
df_uid

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346474.html
上一篇:MySQL查詢不檢索不同的值
下一篇:無法將POST變數插入資料庫
