Date_Time Open High Low Close Up Down
0 2018-03-20 17:01:00 2723.25 2724.50 2723.25 2723.75 372 345
1 2018-03-20 17:02:00 2723.75 2724.25 2723.50 2724.00 127 49
2 2018-03-20 17:03:00 2724.00 2724.00 2723.75 2723.75 55 11
3 2018-03-20 17:04:00 2724.00 2724.50 2724.00 2724.00 105 25
...
我想过滤上面的数据,以便排除时间不在15:00:00和17:00:00之间的每一行。
我已经尝试过了:
df.loc[df.Date_Time.time() > time(15, 0) & df.Date_Time.time() < time(17, 0)]
自然,这将不起作用,因为他尝试在熊猫系列而非元素上调用time()
。
AttributeError:“系列”对象没有属性“时间”
所以,我认为我可以应用lambda函数:
df.apply(lambda x: x['Date_Time'].time() > time(15, 0))
但这也不起作用。
KeyError :(“日期时间”,“发生在索引日期时间”)
这也是:
df.apply(lambda x: x.Date_Time.time() < time(15, 0))
不起作用,我真的不明白为什么我遇到了另一个错误。
AttributeError :(““系列”对象没有属性“ Date_Time””, “发生在索引Date_Time”)
是否可以只一行完成?还是我必须“手动”遍历整个意甲?
答案 0 :(得分:2)
我认为您可以在pandas
中通过between_time
进行检查
df.set_index(['Date_Time']).between_time('15:00:00', '17:00:00')
答案 1 :(得分:0)
出于某种原因我忽略了,使用axis=1
似乎可以解决问题。
filter = df.apply(lambda x: x['Date_Time'].time() > time(15, 0) and x['Date_Time'].time() < time(17, 0), axis=1)
然后我可以打电话给df.loc[filter]