2016-06-16 54 views
1

我的数据框有两列:(i)字符串格式的日期列和(ii)int值。我想将日期字符串转换为日期对象,然后根据日期范围对数据进行过滤和排序。一个字符串转换为日期的罚款有:根据日期范围对熊猫数据框中的数据进行排序和过滤

date = dateutil.parser.parse(date_string) 
date = ("%02d:%02d:%02d" % (date.hour, date.minute, date.second)) 

我如何可以遍历在数据帧中的所有值,并应用解析这样我就可以再使用熊猫库的DF过滤和数据整理如下?

df.sort(['etime']) 
df[df['etime'].isin([begin_date, end_date])] 

样品我的数据帧的数据低于:

  etime      instantaneous_ops_per_sec 
3 2016-06-15T15:30:09Z       26 
4 2016-06-15T15:30:14Z       26 
5 2016-06-15T15:30:19Z       24 
6 2016-06-15T15:30:24Z       27 
+0

我想你可能想在'(begin_date,end_date)'之间使用'df ['etime']''而不是'isin'来做你的过滤。对于与“begin_date”或“end_date”完全匹配的日期,使用'isin'只会返回“True”。使用'between'将在'begin_date'和'end_date'之间返回'True'。 – root

+0

对,谢谢! –

回答

0

试试这个:

df['etime'] = pd.to_datetime(df['etime'], format="%Y%m%d %H:%M:%S") 
df[df['etime'].between([begin_date, end_date])] 

注意:由于代码说date,然后使用time,然后按time排序。结果可能不是你所追求的。你通常要过滤然后排序,但OP中的代码却相反。

+0

@keren,如果你喜欢答案请upvote。 – Merlin

2

你想用pd.to_datetime

df['etime'] = pd.to_datetime(df['etime'], format="%H:%M:%S") 
+0

我得到以下错误: 'DF [ 'ETIME'] = pd.to_datetime(DF [ 'ETIME'],格式= “%H:%M:%S”)' *时间数据u” 2016-06-15T15:30:09Z'格式不匹配'%H:%M:%S'(匹配)* –

+1

我得到相同的错误,但它对我没有指定格式:'pd.to_datetime DF [ 'ETIME'])'。 – root

+0

这两个建议的工作:以下格式或没有根据建议的格式 - 谢谢! –

相关问题