Python tính chênh lệch ngày như thế nào?

Ví dụ cụ thể này tính toán sự khác biệt giữa các ngày trong cột end_date và start_date tính theo ngày

Lưu ý rằng chúng ta có thể thay thế 'D' trong hàm timedelta64[] bằng các giá trị sau để tính chênh lệch ngày theo các đơn vị khác nhau

  • W. tuần
  • M. Tháng
  • Y. năm

Các ví dụ sau đây cho thấy cách tính chênh lệch ngày trong DataFrame của gấu trúc trong thực tế

ví dụ 1. Tính toán sự khác biệt giữa hai ngày với cột ngày giờ

Giả sử chúng ta có DataFrame gấu trúc sau

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'start_date': pd.date_range[start='1/5/2020', periods=6, freq='W'],
                   'end_date': pd.date_range[start='6/1/2020', periods=6, freq='M']}]

#view DataFrame
print[df]

  start_date   end_date
0 2020-01-05 2020-06-30
1 2020-01-12 2020-07-31
2 2020-01-19 2020-08-31
3 2020-01-26 2020-09-30
4 2020-02-02 2020-10-31
5 2020-02-09 2020-11-30

#view dtype of each column in DataFrame
df.dtypes

start_date    datetime64[ns]
end_date      datetime64[ns]
dtype: object

Vì cả hai cột trong DataFrame đã có kiểu dữ liệu là datetime64, nên chúng ta có thể sử dụng cú pháp sau để tính chênh lệch giữa ngày bắt đầu và ngày kết thúc

import numpy as np

#create new columns that contains date differences
df['diff_days'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'D']
df['diff_weeks'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'W']
df['diff_months'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'M']
df['diff_years'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'Y']

#view updated DataFrame
print[df]

  start_date   end_date  diff_days  diff_weeks  diff_months  diff_years
0 2020-01-05 2020-06-30      177.0   25.285714     5.815314    0.484610
1 2020-01-12 2020-07-31      201.0   28.714286     6.603832    0.550319
2 2020-01-19 2020-08-31      225.0   32.142857     7.392349    0.616029
3 2020-01-26 2020-09-30      248.0   35.428571     8.148011    0.679001
4 2020-02-02 2020-10-31      272.0   38.857143     8.936528    0.744711
5 2020-02-09 2020-11-30      295.0   42.142857     9.692191    0.807683

Các cột mới chứa sự khác biệt về ngày giữa ngày bắt đầu và ngày kết thúc theo ngày, tuần, tháng và năm

ví dụ 2. Tính toán sự khác biệt giữa hai ngày với các cột chuỗi

Giả sử chúng ta có DataFrame gấu trúc sau

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'start_date': ['2020-01-05', '2020-01-12', '2020-01-19'],
                   'end_date': ['2020-06-30', '2020-07-31', '2020-08-31']}]

#view dtype of each column
print[df.dtypes]

start_date    object
end_date      object
dtype: object

Vì không có cột nào trong DataFrame có dtype là datetime64, chúng tôi sẽ gặp lỗi nếu chúng tôi cố gắng tính toán sự khác biệt giữa các ngày

import numpy as np

#attempt to calculate date difference
df['diff_days'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'D']

TypeError: unsupported operand type[s] for -: 'str' and 'str'

Trước tiên chúng ta phải sử dụng pd. to_datetime để chuyển đổi từng cột thành định dạng ngày giờ trước khi tính toán sự khác biệt giữa các ngày

import numpy as np

#convert columns to datetime
df[['start_date','end_date']] = df[['start_date','end_date']].apply[pd.to_datetime]

#calculate difference between dates
df['diff_days'] = [df['end_date'] - df['start_date']] / np.timedelta64[1, 'D']

#view updated DataFrame
print[df]

  start_date   end_date  diff_days
0 2020-01-05 2020-06-30      177.0
1 2020-01-12 2020-07-31      201.0
2 2020-01-19 2020-08-31      225.0

Vì lần đầu tiên chúng tôi chuyển đổi từng cột sang định dạng ngày giờ, nên chúng tôi có thể tính toán thành công chênh lệch giữa các ngày mà không có bất kỳ lỗi nào

Python phân biệt ngày tháng như thế nào?

Sử dụng mô-đun ngày giờ trong Python. Để tìm sự khác biệt giữa hai ngày, chúng tôi chỉ cần nhập hai ngày với loại ngày và trừ chúng , từ đó cung cấp cho chúng tôi số ngày giữa .

Chênh lệch ngày được tính như thế nào?

Sử dụng hàm DATEDIF khi bạn muốn tính chênh lệch giữa hai ngày . Trước tiên hãy đặt ngày bắt đầu vào ô và ngày kết thúc vào ô khác. Sau đó gõ một công thức như một trong những điều sau đây. Cảnh báo. Inếu Start_date lớn hơn End_date, kết quả sẽ là #NUM.

Làm cách nào để tính chênh lệch giữa hai dấu thời gian trong Python?

Cách sử dụng mô-đun ngày giờ của Python .
nhập ngày giờ. Để tính chênh lệch thời gian, bạn cần tạo hai dấu thời gian khác nhau. .
từ ngày nhập datetime date1 = datetime. .
ngày1 = ngày giờ. .
từ thời gian nhập datetime time1 = datetime. .
dt1 = ngày giờ. .
dt2 = ngày giờ. .
dt1 = ngày giờ. .
hôm nay = ngày giờ

Làm cách nào để tính số năm giữa hai ngày trong Python?

Tạo một đối tượng relativedelta biểu thị khoảng thời gian giữa hai ngày đã cho. Sử dụng hàm relativedelta[end_date, start_date] của mô-đun dateutil để tạo đối tượng relativedelta. Sử dụng delta tương đối. thuộc tính năm để lấy năm .

Chủ Đề