2017-10-11 58 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