Вычтите два столбца в панде - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть два столбца в кадре данных панд, которые представляют час дня в 24-часовом формате, то есть 18:00:00. Оба они находятся в типе объекта, и я хочу найти разницу в часах этих двух столбцов. Например, разница между 18:00:00 и 17:00:00 должна составлять 1. Я пытался использовать функцию to_timedelta, но она возвращает ошибку «без указания единиц», даже после того, как я задаю единицу как «h».

d = {'col1': ['18:00:00', '19:00:00'], 'col2': ['17:00:00', '17:00:00']}
df = pd.DataFrame(data=d)
df

df['col1']-df['col2']

Может ли кто-нибудь помочь в этом? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Использование

df=df.apply(pd.to_datetime)
(df.col1-df.col2).dt.seconds/3600
Out[524]: 
0    1.0
1    2.0
dtype: float64
0 голосов
/ 07 сентября 2018

Вы должны сначала конвертировать to_datetime:

df.col1 = pd.to_datetime(df.col1)
df.col2 = pd.to_datetime(df.col2)

df.col1.sub(df.col2)

0   01:00:00
1   02:00:00
dtype: timedelta64[ns]

Если вы хотите получить результат в часах, разделите его на другое Timedelta:

df.col1.sub(df.col2).div(pd.Timedelta('1h'))

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