日期格式化熊猫- Python

Date Formatting Pandas - Python

本文关键字:Python 熊猫 格式化 日期      更新时间:2023-09-26

我在python中使用pandas,最后得到以下表:

+---------------------+----------------------+-----------------+
|        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']

问题是duration列使用的类型在Javascript中不是严格可用的。

尝试在Python中将duration列强制转换为String,或者显式替换该列或创建格式化字符串的新列。我怀疑pandas数据框中该列的当前dtype是Python的timedelta或类似的。

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

这有点难看,但是您可以像这样转换为pandas字符串表示:

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