[英]How to subtract date and time in Pandas?
我有來自 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
您可以使用減去第一個時間戳來計算差異,然后獲取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)
)
Output:
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
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 - 減日期) 返回一個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" 格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.