我有一个pandas数据框格式的csv文件,其中包含以下索引
Time stamp SOG Altitude
2015-03-11T08:49:53.000Z 0 20
2015-03-11T08:49:42.000Z 0 19
2015-03-11T08:49:32.000Z 0 24
.....
我想使用ix来切割数据帧,但我需要在索引中输入几小时和一分钟,而不是确切的值。
例如
df3= df.ix['2015-03-11T08:49':'2015-03-11T08:52',['SOG','Altitude' ]]
我应该使用常规表达还是让Pandas有办法做到这一点?
注意:截至Pandas v0.20,.ix
indexer is deprecated赞成.iloc
/ .loc
。
答案 0 :(得分:1)
如果您将Time stamp
设为DatetimeIndex,则可以使用DataFrame.between_time
method:
import io
import pandas as pd
text = '''\
Time stamp SOG Altitude
2015-03-11T08:49:53.000Z 0 20
2015-03-11T08:49:42.000Z 0 19
2015-03-11T08:49:32.000Z 0 24'''
df = pd.read_table(io.BytesIO(text), sep='\s{2,}')
df['Time stamp'] = pd.to_datetime(df['Time stamp'])
df = df.set_index(['Time stamp'])
df.between_time('8:49:32', '8:49:52')
产量
SOG Altitude
Time stamp
2015-03-11 08:49:42 0 19
2015-03-11 08:49:32 0 24
答案 1 :(得分:0)
将索引转换为Pandas时间戳。
df.index = [pd.Timestamp(ts) for ts in df.index]
然后您的.ix索引应该按照您的预期工作。