Как вычесть дату и время в Пандах? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть данные от Pandas, которые были содержимым файла CSV:

Date                Inbound     Outbound
17/10/2019 12:35    5.49E+02    3.95E+03 
17/10/2019 12:40    2.06E+02    3.17E+03 
17/10/2019 12:45    2.06E+02    3.17E+03 
17/10/2019 12:50    2.06E+02    3.17E+03 
17/10/2019 12:55    2.06E+02    3.17E+03 
17/10/2019 13:00    2.06E+02    3.17E+03
....

Я хочу преобразовать столбец Date из отметок времени в периоды времени в единицах минут, что должно привести к чему-токак следующее:

    Date        Inbound     Outbound
    0           5.49E+02    3.95E+03 
    5           2.06E+02    3.17E+03 
    10          2.06E+02    3.17E+03 
    15          2.06E+02    3.17E+03 
    20          2.06E+02    3.17E+03 
    25          2.06E+02    3.17E+03

Ответы [ 2 ]

3 голосов
/ 17 октября 2019

Вы можете использовать вычитание первой временной отметки, чтобы вычислить разницу, затем получить total_seconds() и преобразовать в минуты:

df['Date'] = pd.to_datetime(df['Date'])

df['Date'] = (df.Date.sub(df.Date.iloc[0])
   .dt.total_seconds().div(60).astype(int)
)

Вывод:

   Date  Inbound  Outbound
0     0    549.0    3950.0
1     5    206.0    3170.0
2    10    206.0    3170.0
3    15    206.0    3170.0
4    20    206.0    3170.0
5    25    206.0    3170.0
1 голос
/ 17 октября 2019
import pandas as pd

data = [
"17/10/2019 12:35",  
"17/10/2019 12:40",  
"17/10/2019 12:45", 
"17/10/2019 12:50",  
"17/10/2019 12:55",  
"17/10/2019 13:00",
    ]

columns = ["Date"]

df = pd.DataFrame(data, columns = columns)
# Because the values came in frm a CSV, they are not datetime objects. 
# Convert the column to datetime ojects
df['Date'] = pd.to_datetime(df['Date'])
subtractdate = df["Date"].iloc[0]
df["Diff"] = df["Date"].apply(lambda x: x - subtractdate)    
print(df)

РЕДАКТИРОВАТЬ:

Чтобы получить минуты, выполните следующие действия ...

df["Diff"] = df["Date"].apply(lambda x: (x - subtractdate).seconds/60)

(x - вычитание) возвращает a timedeltaобъект. У него нет опции «минут», но есть секунды. Он вернется в формате float (т. Е. 5.0, 10.0)

Чтобы получить его в виде строки, выполните следующее:

df["Diff"] = df["Date"].apply(lambda x: str( (x - subtractdate).seconds/60  ) ) 

И получите его какint:

df["Diff"] = df["Date"].apply(lambda x: int( (x - subtractdate).seconds/60  ) ) 

int будет форматом «5, 10, 15».

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