2017-10-11 13 views
1

팬더에 현재 열의 최대 값을 가져 오려고합니다. 예를 들어 열 [ask]을 가져 와서 [high_of_day]이라는 새 열을 만들어이 열 점까지 이고 최대 값을 [high_of_day] 열까지 반복하여 표시하려면 값이 큰 ask 열의 값이 나타납니다.팬더를 사용하여 열의 현재 최대 값을 가져 와서 새 열을 입력하십시오.

데이터 입력 내가 루프의 넓은 범위를 사용하여 시도했지만 바로 그것을 얻을 수없는 것

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 

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   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 
,617,
+0

감사! 훌륭한 일을했고, 도움에 감사드립니다. – austinl714