Я хотел бы преобразовать временные рамки в часы. Я могу сделать это для одной серии (один столбец данных), но я хотел бы найти способ применить его ко всем столбцам.
A for loop
работает, но есть ли более быстрый или более питонский способ сделать это?
import pandas as pd
import datetime
import numpy as np
df = pd.DataFrame({'a': pd.to_timedelta(['0 days 00:00:08','0 days 05:05:00', '0 days 01:01:57']),
'b' : pd.to_timedelta(['0 days 00:44:00','0 days 00:15:00','0 days 01:02:00']),
'c': pd.to_timedelta(['0 days 00:34:33','0 days 04:04:00','0 days 01:31:58'])})
df
a b c
0 00:00:08 00:44:00 00:34:33
1 05:05:00 00:15:00 04:04:00
2 01:01:57 01:02:00 01:31:58
for c in df.columns:
df[c] = (df[c]/np.timedelta64(1,'h')).astype(float)
df
a b c
0 0.002222 0.733333 0.575833
1 5.083333 0.250000 4.066667
2 1.032500 1.033333 1.532778
Я пытался использовать лямбду, но есть кое-что, что я ошибаюсь:
df = df.apply(lambda x: x/np.timedeltat(1, 'h')).astype(float)
Возвращает ошибку:
AttributeError: ("'module' object has no attribute 'timedelta'", u'occurred at index a')