2015-08-28 68 views
0

我使用python的熊猫,我落得下表:日期格式熊猫 - Python的

+---------------------+----------------------+-----------------+ 
|  start  |  finish  | duration  | 
+---------------------+----------------------+-----------------+ 
| 2013-08-12 12:00:00 | 2013-08-14 16:00:00 | 2 days 04:00:00 | 
+---------------------+----------------------+-----------------+ 

dataframe=dataframe.to_json(orient='records',date_format='iso',double_precision=2,date_unit='s') 

return jsonify(data=dataframe) 

我发这种过度使用AJAX请求作为data,并在JavaScript端我结束了data.duration = 1970-01-03T04:00:00Z

如何格式化数据帧,以便当我拨打data.duration时,我得到2 days 04:00:00

注意持续时间使用计算:

data_frame['duration'] = data_frame['finish'] - data_frame['start'] 
+0

也许转换周期与STR(字符串在JavaScript中,简单的方法,阅读和达到的concensus几年前在http://stackoverflow.com/questions/538666/python-format-timedelta-to-string。 – 2015-08-28 04:49:38

回答

0

的问题是持续时间列使用类型,是不是在Javascript严格使用。

尝试将持续时间列转换为Python中的字符串或显式替换列或创建格式化字符串的新列。我怀疑熊猫数据框中该列的当前dtype是Python时间点或类似的。

在序列化为JSON并传输后,它看起来像持续时间被解释为JavaScript Date,因为2天和4小时已转换为1970年1月1日后的2天和4小时,“零” Unix time这也是JS时间标准。在Javascript中,Date对象与Python中的DateTime类似。

0

这是一个有点难看,但你可以同时投射到pandas字符串表示这样的:)

dataframe['duration'].apply(lambda x: str(pd.Timedelta(x)))