Highs
Date
2017-06-01 344.88
2017-06-02 342.88
2017-06-05 348.44
2017-06-06 359.49
2017-06-07 360.50
2017-06-08 371.90
2017-06-09 376.87
2017-06-12 364.50
2017-06-13 376.00
2017-06-14 384.25
2017-06-15 375.46
我想以这种方式对这些数据进行排序,
例如,我有一个值。 2017-06-09 376.87
我想开始按照特定值的索引(2017-06-09)按降序排序值。但是我想限制sort函数在2017-06-09
索引之前访问或迭代,我的意思是,它应该排序或访问这些日期或值
2017-06-05 348.44
2017-06-06 359.49
2017-06-07 360.50
2017-06-08 371.90
并且仅在2017-06-09
之后对值进行排序或访问。
修改1
正在使用,
df = web.DataReader('TSLA', 'google', start, end)
Highs = df['High'] # Getting only the values from the 'High' Column
Highest_high = sorted(Highs)[-1] # returns second highest value
for a, b in enumerate(array):
if b == highest:
Highests_index = b
Highests _index
返回0,1,2等值,而不是像2017-06-01这样的日期
我怎么能用像0,1,2 ..这样的索引对它们进行排序?根据我之前解释的标准?
编辑2:
现在我知道如何从特定的索引开始排序,但是他们还有1个小问题,
如果d = 2017-06-02
我们使用df.loc[d:, 'High']= df.loc[d:,'High'].sort_values().values
从那一点开始排序。但是如果我想按照d + 5
(2017-06-02 +
5)开始排序,那么我可以从2017-06-09
5索引开始。
因为日期无法添加。
注意:日期(索引)是日期时间格式。
答案 0 :(得分:2)
您需要loc
和sort_values
,但在排序index
值后,因此需要values
来分配numpy数组:
print (df.loc['2017-06-09':,'Highs'].sort_values())
Date
2017-06-12 364.50
2017-06-15 375.46
2017-06-13 376.00
2017-06-09 376.87
2017-06-14 384.25
Name: Highs, dtype: float64
df.loc['2017-06-09':, 'Highs']= df.loc['2017-06-09':,'Highs'].sort_values().values
print (df)
Highs
Date
2017-06-01 344.88
2017-06-02 342.88
2017-06-05 348.44
2017-06-06 359.49
2017-06-07 360.50
2017-06-08 371.90
2017-06-09 364.50
2017-06-12 375.46
2017-06-13 376.00
2017-06-14 376.87
2017-06-15 384.25
编辑:
要检查第二大索引值,请使用sort_values
,然后按[-2]
选择:
d = df['Highs'].sort_values().index[-2]
print (d)
2017-06-09 00:00:00
df.loc[d:, 'Highs']= df.loc[d:,'Highs'].sort_values().values
print (df)
Highs
Date
2017-06-01 344.88
2017-06-02 342.88
2017-06-05 348.44
2017-06-06 359.49
2017-06-07 360.50
2017-06-08 371.90
2017-06-09 364.50
2017-06-12 375.46
2017-06-13 376.00
2017-06-14 376.87
2017-06-15 384.25
答案 1 :(得分:1)
df.loc['2017-06-09':,] = df.loc['2017-06-09':,].sort_values(by = 'highs')