#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