获取列的当前最大值并使用 pandas 输入到新列
Get current max value of column and input into new column using pandas
我正在尝试获取 pandas 中列的当前最大值。例如,我想使用列 [ask]
并创建一个新列 [high_of_day]
以显示询问列的最大值 到目前为止 ,并不断重复 [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
非常感谢任何有关获得正确算法的帮助,谢谢!
选项 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
我正在尝试获取 pandas 中列的当前最大值。例如,我想使用列 [ask]
并创建一个新列 [high_of_day]
以显示询问列的最大值 到目前为止 ,并不断重复 [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
非常感谢任何有关获得正确算法的帮助,谢谢!
选项 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