Làm việc với Ngày và Giờ trong Python
Max Shron
Data Scientist & Author
rides['Duration'].dt.total_seconds().min()
-3346.0
rides['Start date'].head(3)
0 2017-10-01 15:23:25
1 2017-10-01 15:42:57
2 2017-10-02 06:37:10
Name: Start date, dtype: datetime64[ns]
rides['Start date'].head(3)\
.dt.tz_localize('America/New_York')
0 2017-10-01 15:23:25-04:00
1 2017-10-01 15:42:57-04:00
2 2017-10-02 06:37:10-04:00
Name: Start date, dtype: datetime64[ns, America/New_York]
# Thử đặt múi giờ...
rides['Start date'] = rides['Start date']\
.dt.tz_localize('America/New_York')
pytz.exceptions.AmbiguousTimeError: Cannot infer dst time from '2017-11-05 01:56:50',
try using the 'ambiguous' argument
# Xử lý datetime mơ hồ
rides['Start date'] = rides['Start date']\
.dt.tz_localize('America/New_York', ambiguous='NaT')
rides['End date'] = rides['End date']\
.dt.tz_localize('America/New_York', ambiguous='NaT')
# Tính lại duration, bỏ qua hàng lỗi rides['Duration'] = rides['End date'] - rides['Start date']# Tìm giá trị nhỏ nhất lại rides['Duration'].dt.total_seconds().min()
116.0
# Xem hàng có vấn đề
rides.iloc[129]
Duration NaT
Start date NaT
End date NaT
Start station 6th & H St NE
End station 3rd & M St NE
Bike number W20529
Member type Member
Name: 129, dtype: object
# Năm của ba hàng đầu
rides['Start date']\
.head(3)\
.dt.year
0 2017
1 2017
2 2017
Name: Start date, dtype: int64
# Xem thứ cho ba chuyến đầu
rides['Start date']\
.head(3)\
.dt.day_name()
0 Sunday
1 Sunday
2 Monday
Name: Start date, dtype: object
# Dịch chỉ mục tiến một, đệm bằng NaT
rides['End date'].shift(1).head(3)
0 NaT
1 2017-10-01 15:26:26-04:00
2 2017-10-01 17:49:59-04:00
Name: End date, dtype: datetime64[ns, America/New_York]
Làm việc với Ngày và Giờ trong Python