Как назначить информацию о часах для серии меток времени Pandas? - PullRequest
2 голосов
/ 08 ноября 2019

У меня есть серия меток времени для панд. У меня также есть серия datetime.time. Я просто хочу изменить часть часов на временной метке. и я получу эти значения из серии datetime.time. Какой самый простой способ сделать это?

Такой код дает мне желаемый результат:

for i in range(len(df)):
    result= df.date[i].replace(hour=df.time[i].hour,minute=df.time[i].minute,second=df.time[i].second)
    print(result)
2018-09-06 18:00:00
2018-09-06 18:00:01
2018-09-06 18:00:02
2018-09-06 18:00:03
2018-09-06 18:00:04

Связанный с даннымиинформация:

>>>df

Выход:

|   | time     | date       |
|---|----------|------------|
| 0 | 18:00:00 | 2018-09-06 |
| 1 | 18:00:01 | 2018-09-06 |
| 2 | 18:00:02 | 2018-09-06 |
| 3 | 18:00:03 | 2018-09-06 |
| 4 | 18:00:04 | 2018-09-06 |
>>>df.dtypes

Выход:

time            object
date    datetime64[ns]
dtype: object
>>>df.date[0]
>>>df.time[0]

Выход:

Timestamp('2018-09-06 00:00:00')
datetime.time(18, 0)

Но есть ли такие простые методы?

df.date.Example_Function(df.time)

или

df.date.time=df.time

1 Ответ

1 голос
/ 08 ноября 2019

Используйте to_timedelta с DataFrame.pop для столбца извлечения и потому что времена Python также преобразуются в строки:

df['date'] += pd.to_timedelta(df.pop('time').astype(str))
print (df)
                 date
0 2018-09-06 18:00:00
1 2018-09-06 18:00:01
2 2018-09-06 18:00:02
3 2018-09-06 18:00:03
4 2018-09-06 18:00:04
...