Объединить десятичные секунды в столбец времени в Панд

#python #pandas

Вопрос:

У меня есть столбец с hh:mm:ss и отдельный столбец с десятичными секундами.

У меня есть довольно ужасные текстовые файлы для обработки, и десятичное значение моего времени разделено в другом столбце. Теперь я хотел бы объединить их обратно.

Например:

 df = {'Time':['01:00:00','01:00:00 AM','01:00:01 AM','01:00:01 AM'], 
      'DecimalSecond':['14','178','158','75']} 
 

Я попробовал сделать следующее, но это не сработало. Это дает мне «01:00:00 УТРА.14» ЛОЛ

 df = df['Time2'] = df['Time'].map(str)   '.'   df['DecimalSecond'].map(str) 
 

Цель состоит в том, чтобы придумать один столбец с именем «Time2», в котором первая строка 01:00:00.14 утра, вторая строка 01.00.00.178 утра и т. Д.)

Спасибо вам за помощь.

Ответ №1:

Вы можете преобразовать выход в дату и время, а затем позвонить Series.dt.time :

 #Time column is splitted by space and extracted values before first space
s = df['Time'].astype(str).str.split().str[0]   '.'   df['DecimalSecond'].astype(str)
df['Time2'] = pd.to_datetime(s).dt.time
print (df)
         Time DecimalSecond            Time2
0     01:00:00            14  01:00:00.140000
1  01:00:00 AM           178  01:00:00.178000
2  01:00:01 AM           158  01:00:01.158000
3  01:00:01 AM            75  01:00:01.750000
 

Комментарии:

1. Спасибо.. Я на самом деле забыл поставить «AM» в df…. Это просто не могло сработать… 🙁 вы можете перепроверить? Спасибо.

2. @Psychefelic — Ответ был отредактирован для этой проблемы

Ответ №2:

Пожалуйста, ознакомьтесь с кодом python ниже

 In [1]:
import pandas as pd
In [2]:
df = pd.DataFrame({'Time':['01:00:00','01:00:00','01:00:01','01:00:01'], 
                   'DecimalSecond':['14','178','158','75']})
In [3]:
df['Time2'] = df[['Time','DecimalSecond']].apply(lambda x: ' '.join(x), axis = 1)
print(df)
       Time DecimalSecond         Time2
0  01:00:00            14   01:00:00 14
1  01:00:00           178  01:00:00 178
2  01:00:01           158  01:00:01 158
3  01:00:01            75   01:00:01 75
In [4]:
df.iloc[:,2]
Out[4]:
0     01:00:00 14
1    01:00:00 178
2    01:00:01 158
3     01:00:01 75
Name: Time2, dtype: object