TL; Phiên bản DR:
Đối với trường hợp đơn giản của:
- Tôi có một cột văn bản có dấu phân cách và tôi muốn hai cột
Giải pháp đơn giản nhất là:
df[['A', 'B']] = df['AB'].str.split[' ', 1, expand=True]
Bạn phải sử dụng
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
2 nếu các chuỗi của bạn có số lượng phân tách không đồng nhất và bạn muốn >>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
3 để thay thế các giá trị bị thiếu.Lưu ý làm thế nào, trong cả hai trường hợp, phương pháp
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
4 là không cần thiết. Không phải là >>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
5.Chi tiết:
Giải pháp của Andy Hayden là tuyệt vời nhất trong việc thể hiện sức mạnh của phương pháp
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
6.Nhưng đối với một sự phân chia đơn giản trên một phân tách đã biết [như, tách bằng dấu gạch ngang hoặc tách bằng khoảng trắng], phương pháp
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
7 là đủ1. Nó hoạt động trên một cột [chuỗi] của chuỗi và trả về một cột [loạt] danh sách:>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
1: Nếu bạn không chắc hai tham số đầu tiên của
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
7 làm, tôi khuyên bạn nên sử dụng các tài liệu cho phiên bản Python đơn giản của phương thức.Nhưng làm thế nào để bạn đi từ:
- Một cột chứa danh sách hai phần tử
to:
- Hai cột, mỗi cột chứa phần tử tương ứng của danh sách?
Chà, chúng ta cần xem xét kỹ hơn thuộc tính
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
9 của một cột.Đó là một đối tượng ma thuật được sử dụng để thu thập các phương thức xử lý từng phần tử trong một cột dưới dạng chuỗi, sau đó áp dụng phương thức tương ứng trong mỗi phần tử hiệu quả nhất có thể:
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
Nhưng nó cũng có giao diện "lập chỉ mục" để lấy từng phần tử của một chuỗi theo chỉ mục của nó:
>>> df['AB'].str[0]
0 A
1 A
Name: AB, dtype: object
>>> df['AB'].str[1]
0 1
1 2
Name: AB, dtype: object
Tất nhiên, giao diện lập chỉ mục này của
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
9 không thực sự quan tâm nếu mỗi phần tử mà nó lập chỉ mục thực sự là một chuỗi, miễn là nó có thể được lập chỉ mục, vì vậy:>>> df['AB'].str.split['-', 1].str[0]
0 A1
1 A2
Name: AB, dtype: object
>>> df['AB'].str.split['-', 1].str[1]
0 B1
1 B2
Name: AB, dtype: object
Sau đó, đó là một vấn đề đơn giản là tận dụng lợi thế của python để giải nén các vòng lặp để làm
>>> df['A'], df['B'] = df['AB'].str.split['-', 1].str
>>> df
AB AB_split A B
0 A1-B1 [A1, B1] A1 B1
1 A2-B2 [A2, B2] A2 B2
Tất nhiên, việc loại bỏ DataFrame từ việc tách một cột chuỗi rất hữu ích đến nỗi phương thức
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
7 có thể làm điều đó cho bạn với tham số >>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
2:>>> df['AB'].str.split['-', 1, expand=True]
0 1
0 A1 B1
1 A2 B2
Vì vậy, một cách khác để hoàn thành những gì chúng tôi muốn là làm:
>>> df = df[['AB']]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df.join[df['AB'].str.split['-', 1, expand=True].rename[columns={0:'A', 1:'B'}]]
AB A B
0 A1-B1 A1 B1
1 A2-B2 A2 B2
Phiên bản
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
2, mặc dù dài hơn, có một lợi thế khác biệt so với phương pháp giải nén Tuple. Tuple giải nén không đối phó tốt với các phân chia có độ dài khác nhau:>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2', 'A3-B3-C3']}]
>>> df
AB
0 A1-B1
1 A2-B2
2 A3-B3-C3
>>> df['A'], df['B'], df['C'] = df['AB'].str.split['-']
Traceback [most recent call last]:
[...]
ValueError: Length of values does not match length of index
>>>
Nhưng
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
2 xử lý nó một cách độc đáo bằng cách đặt >>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
3 vào các cột mà không có đủ "chia tách":>>> df.join[
... df['AB'].str.split['-', expand=True].rename[
... columns={0:'A', 1:'B', 2:'C'}
... ]
... ]
AB A B C
0 A1-B1 A1 B1 None
1 A2-B2 A2 B2 None
2 A3-B3-C3 A3 B3 C3
Trong bài viết này, chúng tôi sẽ thảo luận về cách chia cột DataFrame thành hai cột trong Python.
Mục lục
- Tổng quan Pandas DataFrame
- Chia cột DataFrame thành hai cột bằng series.str.split []
- Chia cột DataFrame thành hai cột bằng phương thức Ứng dụng []
- Bản tóm tắt
Tổng quan Pandas DataFrame
Chia cột DataFrame thành hai cột bằng series.str.split []
Chia cột DataFrame thành hai cột bằng phương thức Ứng dụng []
Bản tóm tắt
Trong gấu trúc, DataFrame chứa ba hàng, cột và dữ liệu. Nó là một đối tượng hai chiều chứa các cột và hàng. Trong đó các cột đại diện cho nội dung và hàng đại diện cho chỉ mục. DataFrame giống như một cấu trúc dữ liệu bảng.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
0Chuỗi giá trị cột trong DataFramestudent_address column to two different columns “city” and “state” like,
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
1Trong gấu trúc, một cột DataFrame có thể chứa các giá trị chuỗi được phân định. Nó có nghĩa là, nhiều giá trị trong một cột duy nhất được phân tách bằng dấu gạch ngang, khoảng trắng hoặc dấu phẩy. Ví dụ,
Chia cột DataFrame thành hai cột bằng series.str.split []
Chia cột DataFrame thành hai cột bằng phương thức Ứng dụng []
Bản tóm tắt
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
2- Trong gấu trúc, DataFrame chứa ba hàng, cột và dữ liệu. Nó là một đối tượng hai chiều chứa các cột và hàng. Trong đó các cột đại diện cho nội dung và hàng đại diện cho chỉ mục. DataFrame giống như một cấu trúc dữ liệu bảng. string type; It is a regular expression or a delimiter symbol to split on. By default it is whitespace. It is optional.
- Chuỗi giá trị cột trong DataFrame int type; It specifies the number of splits, default is -1.
- Trong gấu trúc, một cột DataFrame có thể chứa các giá trị chuỗi được phân định. Nó có nghĩa là, nhiều giá trị trong một cột duy nhất được phân tách bằng dấu gạch ngang, khoảng trắng hoặc dấu phẩy. Ví dụ,: bool type; default is False
- Quảng cáo
- Ở đây, chúng tôi có yêu cầu chia một cột duy nhất thành hai cột khác nhau. Ví dụ: trong DataFrame ở trên chia cột Student_Address thành hai cột khác nhau City City City và State State, giống như,
Có nhiều cách khác nhau để làm điều này. Hãy để chúng tôi thảo luận từng người một.student_address column to two different columns “city” and “state”.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
3Trong gấu trúc, các cột DataFrame được gọi là chuỗi và để chuyển đổi cột thành dữ liệu chuỗi chúng ta có thể sử dụng hàm series.str []. Hàm sê -ri.Str.Split [] được sử dụng để chia các giá trị cột đơn thành nhiều cột dựa trên một dấu phân cách hoặc dấu phân cách được chỉ định. Hàm sê -ri.Str.Split [] tương tự như phương thức phân chia chuỗi python, nhưng phương thức split [] hoạt động trên tất cả các cột DataFrame, trong khi phương thức sê -ri.Str.Split [] chỉ hoạt động trên một cột được chỉ định.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
4Phương thức Syntax of Series.Str.Split []student_address column values into the city and state columns. The delimiter ‘‘ underscore is specified between both the values, so both values are separated by ‘‘. We passed ‘_’ as the first argument in the Series. str.split[] method.
Pat: Loại chuỗi; Đó là một biểu thức chính quy hoặc một biểu tượng phân cách để phân chia. Theo mặc định, nó là khoảng trắng. Nó là tùy chọn.
N: Loại int; Nó chỉ định số lượng phân tách, mặc định là -1.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
5Trong gấu trúc, các cột DataFrame được gọi là chuỗi và để chuyển đổi cột thành dữ liệu chuỗi chúng ta có thể sử dụng hàm series.str []. Hàm sê -ri.Str.Split [] được sử dụng để chia các giá trị cột đơn thành nhiều cột dựa trên một dấu phân cách hoặc dấu phân cách được chỉ định. Hàm sê -ri.Str.Split [] tương tự như phương thức phân chia chuỗi python, nhưng phương thức split [] hoạt động trên tất cả các cột DataFrame, trong khi phương thức sê -ri.Str.Split [] chỉ hoạt động trên một cột được chỉ định.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
6Phương thức Syntax of Series.Str.Split []student_name into two columns Name and Surname, and column student_address into columns City and State.
Chia cột DataFrame thành hai cột bằng phương thức Ứng dụng []
Bản tóm tắt
Trong gấu trúc, DataFrame chứa ba hàng, cột và dữ liệu. Nó là một đối tượng hai chiều chứa các cột và hàng. Trong đó các cột đại diện cho nội dung và hàng đại diện cho chỉ mục. DataFrame giống như một cấu trúc dữ liệu bảng.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
7- Parameters:
- Chuỗi giá trị cột trong DataFrame
- Trong gấu trúc, một cột DataFrame có thể chứa các giá trị chuỗi được phân định. Nó có nghĩa là, nhiều giá trị trong một cột duy nhất được phân tách bằng dấu gạch ngang, khoảng trắng hoặc dấu phẩy. Ví dụ,
- Quảng cáo
- Ở đây, chúng tôi có yêu cầu chia một cột duy nhất thành hai cột khác nhau. Ví dụ: trong DataFrame ở trên chia cột Student_Address thành hai cột khác nhau City City City và State State, giống như,
- Có nhiều cách khác nhau để làm điều này. Hãy để chúng tôi thảo luận từng người một.
- Trong gấu trúc, các cột DataFrame được gọi là chuỗi và để chuyển đổi cột thành dữ liệu chuỗi chúng ta có thể sử dụng hàm series.str []. Hàm sê -ri.Str.Split [] được sử dụng để chia các giá trị cột đơn thành nhiều cột dựa trên một dấu phân cách hoặc dấu phân cách được chỉ định. Hàm sê -ri.Str.Split [] tương tự như phương thức phân chia chuỗi python, nhưng phương thức split [] hoạt động trên tất cả các cột DataFrame, trong khi phương thức sê -ri.Str.Split [] chỉ hoạt động trên một cột được chỉ định.
Phương thức Syntax of Series.Str.Split []
Pat: Loại chuỗi; Đó là một biểu thức chính quy hoặc một biểu tượng phân cách để phân chia. Theo mặc định, nó là khoảng trắng. Nó là tùy chọn.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
8Trong gấu trúc, các cột DataFrame được gọi là chuỗi và để chuyển đổi cột thành dữ liệu chuỗi chúng ta có thể sử dụng hàm series.str []. Hàm sê -ri.Str.Split [] được sử dụng để chia các giá trị cột đơn thành nhiều cột dựa trên một dấu phân cách hoặc dấu phân cách được chỉ định. Hàm sê -ri.Str.Split [] tương tự như phương thức phân chia chuỗi python, nhưng phương thức split [] hoạt động trên tất cả các cột DataFrame, trong khi phương thức sê -ri.Str.Split [] chỉ hoạt động trên một cột được chỉ định.
>>> import pandas as pd
>>> df = pd.DataFrame[{'AB': ['A1-B1', 'A2-B2']}]
>>> df
AB
0 A1-B1
1 A2-B2
>>> df['AB_split'] = df['AB'].str.split['-']
>>> df
AB AB_split
0 A1-B1 [A1, B1]
1 A2-B2 [A2, B2]
9Phương thức Syntax of Series.Str.Split []student_address into two columns city and state. For that, we applied a lambda function on all values of column student_address. This lambda function broke each value in that column to two different values i.e. City and State. Then we assigned those values to two new columns.
Ví dụ 2:
Ví dụ về phương thức dataFrame.apply [] với dấu phẩy như một dấu phân cách, để chia hai giá trị cột khác nhau thành bốn cột mới.
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
0Đầu ra
>>> upper_lower_df = pd.DataFrame[{"U": ["A", "B", "C"]}]
>>> upper_lower_df
U
0 A
1 B
2 C
>>> upper_lower_df["L"] = upper_lower_df["U"].str.lower[]
>>> upper_lower_df
U L
0 A a
1 B b
2 C c
1Trong tập lệnh trên, chúng tôi đã áp dụng phương thức pandas.dataFrame.apply [] để chia hai cột Student_name và student_address thành bốn cột mới, tức là student_name thành tên và họ, và student_address vào thành phố và tiểu bang.student_name and student_address into four new columns i.e. student_name into Name and Surname, and student_address into City and State.
Bản tóm tắt
Trong bài viết, chúng tôi đã thảo luận về cột chuỗi trong DataFrame là gì? Chúng tôi đã liệt kê ra các cách khác nhau để chia cột chuỗi thành hai cột và cũng giải thích từng phương pháp với các ví dụ thực tế.