GANDAS DATAFRAME là tuyệt vời để thao tác dữ liệu. Nó có thể xảy ra là bạn có một cột chứa các giá trị chuỗi được phân định, ví dụ, A, B, C, và bạn muốn các giá trị có mặt trong các cột riêng biệt. Trong hướng dẫn này, chúng tôi sẽ xem xét cách phân chia một cột văn bản trong một bản dữ liệu gấu trúc thành nhiều cột theo Delimiter.
Làm thế nào để chia một cột theo dấu phân cách trong Python?
Bạn có thể sử dụng chức năng Pandas Series.str.split[]
để phân chia các chuỗi trong cột xung quanh một dấu phân cách/dấu phân cách nhất định. Nó tương tự như hàm chuỗi Python
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df0 nhưng áp dụng cho toàn bộ cột DataFrame. Sau đây là cú pháp:
# df is a pandas dataframe # default parameters pandas Series.str.split[] function df['Col'].str.split[pat, n=-1, expand=False] # to split into multiple columns by delimiter df['Col'].str.split[delimiter, expand=True]
Vượt qua
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df1 để chia các chuỗi thành các cột riêng biệt. Lưu ý rằng đó là
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df2 theo mặc định.
Sử dụng tham số n để vượt qua số lượng phân tách bạn muốn. Đó là
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df3 theo mặc định để phân chia theo tất cả các trường hợp của dấu phân cách.
Ví dụ
Hãy cùng xem xét việc sử dụng phương pháp trên với sự trợ giúp của một số ví dụ. Đầu tiên, chúng tôi sẽ tạo một khung dữ liệu mà chúng tôi sẽ sử dụng trong suốt hướng dẫn này.
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df
Đầu ra:
Ở đây, chúng tôi đã tạo một DataFrame
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df4 có một cột duy nhất địa chỉ. Lưu ý rằng các chuỗi trong cột địa chỉ trên mạng có một mẫu nhất định với chúng. Nếu chúng ta nhìn kỹ, cột này có thể được chia thành ba cột - tên đường phố, thành phố và tiểu bang.
Hãy để đi trước và phân chia cột này.
1. Cột chia theo dấu phân cách thành nhiều cột
Áp dụng chức năng PANDAS SERIES
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df5 trên cột Địa chỉ trên mạng và chuyển dấu phân cách [dấu phẩy trong trường hợp này] trên đó bạn muốn phân chia cột. Ngoài ra, hãy đảm bảo chuyển
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df6 cho tham số
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df7.
# split column into multiple columns by delimiter df['Address'].str.split[',', expand=True]
Output:
Bạn có thể thấy rằng nó dẫn đến ba cột khác nhau. Nếu bạn không vượt qua
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df1, hàm sẽ trả về một cột duy nhất [một chuỗi gấu trúc] với các giá trị do sự phân chia bên trong danh sách.
# using default value for expand parameter df['Address'].str.split[',']
Output:
0 [4860 Sunset Boulevard, San Francisco, Califor... 1 [3055 Paradise Lane, Salt Lake City, Utah] 2 [682 Main Street, Detroit, Michigan] 3 [9001 Cascade Road, Kansas City, Missouri] Name: Address, dtype: object
Ở đây, các giá trị trong cột văn bản đã được chia nhưng điều này đã dẫn đến việc tạo ra các cột riêng biệt. Các giá trị phân chia nằm trong một danh sách.
Bạn vẫn có thể chia cột danh sách này thành nhiều cột nhưng nếu mục tiêu của bạn là chia cột văn bản thành nhiều cột thì tốt hơn là chuyển
import pandas as pd # create a dataframe df = pd.DataFrame[{ 'Address': ['4860 Sunset Boulevard,San Francisco,California', '3055 Paradise Lane,Salt Lake City,Utah', '682 Main Street,Detroit,Michigan', '9001 Cascade Road,Kansas City,Missouri'] }] # display the dataframe df1 cho chức năng Pandas
Series.str.split[]
.Bây giờ, hãy để thêm ba cột mới kết quả từ việc phân chia vào DataFrame DF.
# split column and add new columns to df df[['Street', 'City', 'State']] = df['Address'].str.split[',', expand=True] # display the dataframe df
Output:
Bạn có thể thấy rằng các cột kết quả từ sự phân chia hiện đã được thêm vào DataFrame DF.
2. Chỉ định số lượng phân tách
Trong các ví dụ trên, chúng tôi phân chia cột văn bản Địa chỉ trên mạng trên mỗi lần xuất hiện của dấu phân cách, phạm vi. Đó là, hai lần phân chia dẫn đến ba cột khác nhau. Bạn cũng có thể chỉ định số lượng chia tách bạn muốn. Ví dụ, hãy để Lôi chỉ tạo một phần chia dẫn đến hai cột.
# custom number of splits df['Address'].str.split[',', n=1, expand=True]
Output:
Ở đây, n = 1 biểu thị rằng chúng tôi muốn chỉ chia một. Sự chia rẽ này sẽ xảy ra vào lần xuất hiện đầu tiên của dấu phân cách từ bên trái. Bạn có thể thấy rằng các giá trị thành phố và trạng thái được cùng nhau trong cột thứ hai.
Thêm - Làm thế nào để kết hợp các cột Chuỗi vào một cột duy nhất?
Giống như bạn đã sử dụng hàm gấu trúc Series.str.split[]
để phân chia một cột, bạn có thể sử dụng gấu trúc
# split column into multiple columns by delimiter df['Address'].str.split[',', expand=True]2 để kết hợp các giá trị từ nhiều cột thành một cột. Đây là một ví dụ -
# concat columns by separator df['Street'].str.cat[df[['City', 'State']], sep=',']
Output:
0 4860 Sunset Boulevard,San Francisco,California 1 3055 Paradise Lane,Salt Lake City,Utah 2 682 Main Street,Detroit, Michigan 3 9001 Cascade Road,Kansas City,Missouri Name: Street, dtype: object
Bạn có thể thấy rằng chúng ta nhận được giá trị giống như trong cột Địa chỉ trên mạng.
Với điều này, chúng tôi đi đến cuối hướng dẫn này. Các ví dụ và kết quả mã được trình bày trong hướng dẫn này đã được triển khai trong A & NBSP; Jupyter Notebook & NBSP; với hạt nhân Python [phiên bản 3.8.3] có Pandas phiên bản 1.0.5
Đăng ký nhận bản tin của chúng tôi để biết thêm hướng dẫn và hướng dẫn thông tin. Chúng tôi không spam và bạn có thể từ chối bất cứ lúc nào.
We do not spam and
you can opt out any time.
Piyush là một nhà khoa học dữ liệu đam mê sử dụng dữ liệu để hiểu mọi thứ tốt hơn và đưa ra quyết định sáng suốt. Trong quá khứ, anh ta làm việc như một nhà khoa học dữ liệu cho ZS và có bằng kỹ sư từ IIT Roorkee. Sở thích của anh ấy bao gồm xem cricket, đọc sách và làm việc trên các dự án phụ.
Xem tất cả các bài viết