2015-08-28 4 views
0

Я использую панд в питоне, и я в конечном итоге со следующей таблицей:Дата Форматирование Панда - 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, и на яваскрипте стороны, я в конечном итоге data.duration = 1970-01-03T04:00:00Z

Как я могу отформатировать фрейм данных так, чтобы, когда я звоню data.duration, я получаю 2 days 04:00:00?

Обратите внимание, что продолжительность вычисления с помощью:

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

Может конвертировать длительность в строку с ул() для чтения в JavaScript, простой подход и достиг как консенсус несколько лет назад на http://stackoverflow.com/questions/538666/python-format-timedelta-to-string. –

ответ

0

Проблема заключается в столбец длительности использует тип, который не доступен в строго JavaScript.

Попробуйте добавить столбец длительности в String в Python или явно заменить столбец или создать новый столбец форматированных строк. Я бы заподозрил текущий dtype этой колонки в кадре данных pandas - это timedelta Python или аналогичный.

После того, как сериализация в JSON и транспорт выглядят так, как длительность, была интерпретирована как JavaScript Date, потому что через 2 дня и 4 часа было преобразовано в 2 дня и 4 часа после даты 1 января 1970 года «нуль» Unix time это также стандарт времени JS. В Javascript Date объекты похожи на DateTime в Python.

0

Это немного некрасиво, но вы можете бросить к представлению pandas строки, как это:

dataframe['duration'].apply(lambda x: str(pd.Timedelta(x))) 
Смежные вопросы