#python #dataframe
#питон #фрейм данных
Вопрос:
У меня есть фрагмент кода, который принимает данные в формате csv и выполняет некоторые преобразования во фрейме данных. Один из столбцов в этом фрейме данных содержит время в HH:MM
формате, однако мне нужно время, чтобы вернуться как HH:MM:SS
.
Я попробовал следующее.
Пример CSV/DF:
Время Посещения |
---|
10:01 |
11:40 |
Версия 1
df['Attended Time'] = pd.to_timedelta(df['Attended Time'] ':00', df['Attended Time'])
и
Версия 2
df['Attended Time'] = pd.to_timedelta( np.where(df['Attended Time'].str.count(':') == 1, df['Attended Time'] ':00', df['Attended Time']))
V1 не заполняет мое время посещения секундами и
V2 дает мне мой результат, но добавляет 0 дней ко времени? Кто-нибудь знает, почему? пример 0 дней 10:01:00
Комментарии:
1. это может занять несколько секунд, но не отображать его, и вам, возможно, потребуется преобразовать в строку все значения, используя обычный
strftime("%H:%m:%s")
, перед отображением. И даже если вы добавите:00
и конвертируете обратно вto_timedelta
илиdatetime
илиtime
, это все равно может пропустить секунды.2. если у вас есть строки as, то вы должны добавлять только
:00
без преобразования вtimedelta
—df['Attended Time'] = df['Attended Time'] ':00'
3. или конвертируйте в
datetime
и получите.dt.time
—df['Attended Time'] = pd.to_datetime(df['Attended Time']).dt.time
Ответ №1:
Если у вас есть строки, вы можете только добавить :00
df['Attended Time'] = df['Attended Time'] ':00'
Если вам нужны datetime.time
объекты, то
df['Attended Time'] = pd.to_datetime(df['Attended Time']).dt.time
Минимальный пример:
import pandas as pd data = { 'A': ['10:00', '12:00', '13:00'], } df = pd.DataFrame(data) df['B'] = df['A'] ':00' df['C'] = pd.to_datetime(df['A']).dt.time print(df)
Результат:
A B C 0 10:00 10:00:00 10:00:00 1 12:00 12:00:00 12:00:00 2 13:00 13:00:00 13:00:00