2017-10-11 114 views
1

我試圖獲取熊貓中列的當前最大值。例如,我想採用列[ask]並創建一個新列[high_of_day],以顯示ask列的最大值爲,直至此點爲,並在[high_of_day]列中不斷重複該最大值,直到新問題欄中的值更大。獲取列的當前最大值並使用熊貓輸入到新列中

數據輸入

data = [['9:00',1,0],['10:00',2,0],['11:00',3,0],['12:00',4,0],['13:00',2,0],['14:00',5,0]] 
df3 = pd.DataFrame(data, columns=['DateTime','Ask','High_of_Day'],dtype=float) 

輸出

DateTime Ask High_of_Day 
0  9:00 1.0   0.0 
1 10:00 2.0   0.0 
2 11:00 3.0   0.0 
3 12:00 4.0   0.0 
4 13:00 2.0   0.0 
5 14:00 5.0   0.0 

我已經使用範圍廣,環路嘗試,但似乎無法得到它的權利。

期望得到的結果我想獲得的是:

DateTime Ask High_of_Day 
0  9:00 1.0   1.0 
1 10:00 2.0   2.0 
2 11:00 3.0   3.0 
3 12:00 4.0   4.0 
4 13:00 2.0   4.0 
5 14:00 5.0   5.0 

在得到正確的算法任何幫助非常感謝,謝謝!

回答

2

選項1
pd.Series.cummax

s = df3.Ask.cummax() 
print(s) 
0 1.0 
1 2.0 
2 3.0 
3 4.0 
4 4.0 
5 5.0 
Name: Ask, dtype: float64 

df3['High_of_Day'] = s 
print(df3) 
    DateTime Ask High_of_Day 
0  9:00 1.0   1.0 
1 10:00 2.0   2.0 
2 11:00 3.0   3.0 
3 12:00 4.0   4.0 
4 13:00 2.0   4.0 
5 14:00 5.0   5.0 

選項2
np.maximum.accumulate

df3['High_of_Day'] = np.maximum.accumulate(df3.Ask) 
print(df3) 
    DateTime Ask High_of_Day 
0  9:00 1.0   1.0 
1 10:00 2.0   2.0 
2 11:00 3.0   3.0 
3 12:00 4.0   4.0 
4 13:00 2.0   4.0 
5 14:00 5.0   5.0 
+0

謝謝!工作很好,我很感激幫助 – austinl714