Как получить секунды дня из отметки времени в индексе? - PullRequest
1 голос
/ 19 июня 2020

У меня есть такой фрейм данных:

введите описание изображения здесь

Затем я получаю часы, минуты и секунды как:

train_data['time'] = train_data.index.strftime('%H:%M:%S')

, что приводит к последнему столбцу. Затем я хотел бы получить секунды, просто умножив часы на 3600, минуты на 60, а затем сложив все три. Однако я понятия не имею, как это сделать во всех строках сразу без использования al oop.

Если я получаю индивидуальный доступ к значениям как train_data['time'].values[0], он ведет себя как строка, и тогда становится ясно, как чтобы продолжить, однако, если я просто попытаюсь получить доступ к значениям каким-либо другим способом, я получаю ошибки.

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Используйте to_timedelta для преобразования его в timedeltas, а затем total_seconds:

train_data['time'] = pd.to_timedelta(train_data.index.strftime('%H:%M:%S')).total_seconds()
0 голосов
/ 19 июня 2020

Вы можете использовать комбинацию sum, map, zip, str.split и int:

t = "01:10:34"

as_seconds = sum( f*t for f,t in zip((3600,60,1),map(int,t.split(":"))))

print(as_seconds) # 4234

и применить это ко всем вашим данным.

более разумным выбором было бы использовать datetime.timedelta и получить его .total_seconds () , хотя, как указано jezrael

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...