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

関連する問題