Kết hợp ngày và giờ python pandas

Câu trả lời được chấp nhận hoạt động cho các cột thuộc kiểu dữ liệu

import pandas as pd
7. cho đầy đủ. Tôi bắt gặp câu hỏi này khi tìm kiếm cách thực hiện việc này khi các cột thuộc kiểu dữ liệu. ngày và giờ

df.apply(lambda r : pd.datetime.combine(r['date_column_name'],r['time_column_name']),1)

~ Đã trả lời vào 2016-09-13 16. 24. 48

Trong bài đăng này, chúng ta sẽ xem cách kết hợp các cột chứa năm, tháng và ngày thành một cột duy nhất có kiểu ngày giờ. Chúng ta có thể kết hợp nhiều cột thành một cột ngày theo nhiều cách. Đầu tiên, chúng ta sẽ xem làm thế nào chúng ta có thể kết hợp cột năm, tháng và ngày thành một cột kiểu datetime, trong khi đọc dữ liệu bằng hàm read_csv() của Pandas. Tiếp theo, chúng ta sẽ kết hợp các cột năm, tháng và ngày bằng hàm áp dụng () của Pandas

Đầu tiên, chúng ta hãy tải Pandas

import pandas as pd

Chúng tôi sẽ sử dụng dữ liệu mẫu chỉ chứa ba cột, năm, tháng và ngày. Chúng tôi sẽ tải dữ liệu trực tiếp từ trang github

path2data = "https://raw.githubusercontent.com/cmdlinetips/data/master/combine_year_month_day_into_date_pandas.csv"
df = pd.read_csv(path2data)

Dữ liệu của chúng tôi trông như thế này

df.head()

year	month	day
0	2012	1	1
1	2012	1	2
2	2012	1	3
3	2012	1	4
4	2012	1	5

Kết hợp các cột Năm, Tháng và Ngày thành cột Ngày giờ trong khi đọc tệp

Một trong những cách để kết hợp 3 cột tương ứng với Năm, Tháng và Ngày trong khung dữ liệu là phân tích chúng dưới dạng biến ngày trong khi tải tệp dưới dạng khung dữ liệu Pandas

Trong khi tải tệp dưới dạng khung dữ liệu của Pandas bằng hàm read_csv(), chúng tôi có thể chỉ định tên cột sẽ được kết hợp thành cột ngày giờ. Chúng ta sẽ sử dụng đối số “parse_dates” cho hàm read_csv() và cung cấp các cột năm, tháng và ngày làm giá trị cho từ điển với biến ngày mới làm khóa

df = pd.read_csv(path2data,
                 parse_dates= {"date" : ["year","month","day"]})

Giờ đây, read_csv() của Pandas kết hợp các cột đó thành một cột ngày duy nhất. Và chúng ta có thể kiểm tra kiểu dữ liệu của biến mới bằng cách sử dụng chức năng thông tin () của Pandas

df.info()

Chúng ta có thể thấy rằng nó là một đối tượng kiểu “datetime[ns]”


RangeIndex: 100 entries, 0 to 99
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   date    100 non-null    datetime64[ns]
dtypes: datetime64[ns](1) <===
memory usage: 928.0 bytes

Cũng lưu ý rằng trong khi kết hợp ba cột thành một cột ngày, ba cột ban đầu không có trong khung dữ liệu. Nếu bạn muốn giữ ba cột sau khi kết hợp chúng thành datetime, chúng ta cần sử dụng “keep_date_col=True”

df = pd.read_csv(path2data,
                 parse_dates= {"date" : ["year","month","day"]},
                keep_date_col=True)

Bây giờ chúng tôi có bốn cột bao gồm cột Năm, Tháng và Ngày ban đầu

df.head()

RangeIndex: 100 entries, 0 to 99
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   date    100 non-null    datetime64[ns]
 1   year    100 non-null    object        
 2   month   100 non-null    object        
 3   day     100 non-null    object        
dtypes: datetime64[ns](1), object(3)
memory usage: 3.2+ KB

Kết hợp các cột Tháng, Năm và Ngày với áp dụng Pandas()

Một cách tiếp cận khác để kết hợp nhiều cột thành một cột ngày đầu tiên bằng cách dán ba cột bằng cách sử dụng hàm apply()

Trong ví dụ này, chúng tôi chỉ định các cột quan tâm. Trong khung dữ liệu mẫu của chúng tôi, đó là tất cả các cột. Và sau đó sử dụng hàm lambda để kết hợp ba giá trị liên tiếp bằng hàm join()

import pandas as pd
0

Bây giờ chúng tôi có một cột mới cho ngày

path2data = "https://raw.githubusercontent.com/cmdlinetips/data/master/combine_year_month_day_into_date_pandas.csv"
df = pd.read_csv(path2data)
0

Chúng ta có thể sử dụng hàm info() để xem biến mới chưa phải là đối tượng ngày giờ

path2data = "https://raw.githubusercontent.com/cmdlinetips/data/master/combine_year_month_day_into_date_pandas.csv"
df = pd.read_csv(path2data)
1

Chúng ta có thể chuyển đổi cột ngày thành loại ngày giờ bằng hàm Pandas to_datetime() như trong bài viết

Làm cách nào để kết hợp data['Date'] & data['Time'] để có được thông tin sau?

import pandas as pd
3

Giải pháp tốt nhất

Điều đáng nói là bạn có thể đã đọc được điều này trực tiếp trong e. g. nếu bạn đang sử dụng

import pandas as pd
9 sử dụng
path2data = "https://raw.githubusercontent.com/cmdlinetips/data/master/combine_year_month_day_into_date_pandas.csv"
df = pd.read_csv(path2data)
0

Giả sử đây chỉ là các chuỗi, bạn chỉ cần cộng chúng lại với nhau (có khoảng trắng), cho phép bạn áp dụng

import pandas as pd
30

import pandas as pd
5

Ghi chú. đáng ngạc nhiên (đối với tôi), điều này hoạt động tốt với NaN được chuyển đổi thành NaT, nhưng điều đáng lo ngại là việc chuyển đổi (có lẽ sử dụng đối số

import pandas as pd
31)

Làm cách nào để kết hợp ngày và giờ trong gấu trúc?

Một đối tượng Dấu thời gian trong pandas tương đương với đối tượng datetime của Python. Nó là sự kết hợp của các trường ngày và giờ. Để kết hợp ngày và giờ vào một đối tượng Dấu thời gian, chúng tôi sử dụng Dấu thời gian. hàm combine() trong pandas .

To_datetime trong gấu trúc là gì?

Hàm này chuyển đổi một đối tượng vô hướng, dạng mảng, Sê-ri hoặc DataFrame /dict thành một đối tượng thời gian của gấu trúc . Tham số argint, float, str, datetime, list, tuple, mảng 1-d, Sê-ri, DataFrame/giống như dict. Đối tượng để chuyển đổi thành một ngày giờ.

Làm cách nào để nối năm và tháng trong gấu trúc?

Khung dữ liệu ({"Năm". ["2020","2020"], "Tháng". ["10","11"], "Ngày". ["25","26"]}) df. Năm tháng ngày. .
df["Ngày"] = pd. to_datetime(df["Năm"] + "/" + df["Tháng"] + "/" + df["Ngày"]) df. .
df["Năm"] + "/" + df["Tháng"] + "/" + df["Ngày"] 0 2020/10/25. 1 2020/11/26. .
pd. to_datetime(df["Năm"] + "/" + df["Tháng"] + "/" + df["Ngày"])

Làm cách nào để chuyển đổi ngày giờ thành chuỗi trong gấu trúc?

Sử dụng astype() để thay đổi ngày giờ thành định dạng chuỗi . Ví dụ dưới đây trả về ngày dưới dạng chuỗi có định dạng %Y/%m/%d. dtype của cột ConvertedDate sẽ là đối tượng ( string ).