Cách kiểm tra các ký tự đặc biệt trong khung dữ liệu Python
data = {'col1': [' ', '!', '"', '#', '$', '%', '&', '\'','(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '|', '~', '\n'], 'col2':['v', 'v', 'v', 'v4', 'v5', 'v6', 'v7', 'v8','v9','v10', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '|', '~', '\n'], 'col3': [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,1,'???#',1,1,1,1,1,1,1,1,1,1,1], 'col4': [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,1,1,1,1,1,1,1], 'col5': ['valid1','valid2','valid3','valid4','valid5','valid6','valid7', 'valid8','valid9','valid10','valid11','valid12', 'valid13','valid14','inval!d15','valid16','valid17','valid18', 'valid19','valid20','valid21','valid22','valid23','valid24','valid25', 'valid26', 'valid27','valid28','valid29','valid30','valid31','32','33','34']} dataframe = pd.DataFrame(data=data)
Bài viết này sẽ thảo luận về các cách khác nhau để kiểm tra xem một chuỗi có bắt đầu bằng một hoặc nhiều ký tự đặc biệt trong Python hay không Show Mục lục Kiểm tra xem Chuỗi có bắt đầu bằng bất kỳ ký tự đặc biệt nào bằng Regex khôngTrong Python, mô-đun regex cung cấp chức năng tìm kiếm(str, pattern). Nó chấp nhận một chuỗi và mẫu biểu thức chính quy làm đối số. Sau đó, nó quét qua chuỗi và tìm mẫu biểu thức chính quy đã cho. Nếu tìm thấy một kết quả phù hợp với mẫu, thì nó sẽ trả về đối tượng Match; . Chúng ta có thể sử dụng điều này để kiểm tra xem một chuỗi có bắt đầu bằng bất kỳ ký tự đặc biệt nào hay không. Đối với điều đó, chúng tôi sẽ sử dụng mẫu biểu thức chính quy sau, import string pattern = r'^[' + string.punctuation + ']+' In Python, the string module provides a variable punctuation that contains all the special characters i.e. r”””!”#$%&'()*+,-./:;<=>[email protected][]^_`{|}~”””. We used that string to create the regex pattern. This pattern checks if the string starts with one or more special characters. Let’s see some examples, ví dụ 1 quảng cáo import re import string # Create a regex pattern to match a string # that starts with one or more special characters pattern = r'^[' + string.punctuation + ']+' sample_str = "$sample string" # Check if string starts with special characters if re.search(pattern, sample_str) is not None: print("The String starts with special characters") else: print("The String do not starts with special characters") đầu ra The String starts with special characters Chuỗi của chúng tôi có một ký tự đặc biệt ở đầu và mẫu biểu thức chính quy đã phát hiện thành công ký tự đó Bạn có thể sử dụng cú pháp cơ bản sau để xóa các ký tự đặc biệt khỏi một cột trong DataFrame của gấu trúc.df['my_column'] = df['my_column'].str.replace('\W', '', regex=True) Ví dụ cụ thể này sẽ xóa tất cả các ký tự trong my_column không phải là chữ cái hoặc số Ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế Ví dụ. Xóa các ký tự đặc biệt khỏi cột trong PandasGiả sử chúng ta có DataFrame gấu trúc sau chứa thông tin về các cầu thủ bóng rổ khác nhau import pandas as pd #create DataFrame df = pd.DataFrame({'team' : ['Mavs$', 'Nets', 'Kings!!', 'Spurs%', '&Heat&'], 'points' : [12, 15, 22, 29, 24]}) #view DataFrame print(df) team points 0 Mavs$ 12 1 Nets 15 2 Kings!! 22 3 Spurs% 29 4 &Heat& 24 Giả sử chúng tôi muốn xóa tất cả các ký tự đặc biệt khỏi các giá trị trong cột nhóm Chúng ta có thể sử dụng cú pháp sau để làm như vậy #remove special characters from team column df['team'] = df['team'].str.replace('\W', '', regex=True) #view updated DataFrame print(df) team points 0 Mavs 12 1 Nets 15 2 Kings 22 3 Spurs 29 4 Heat 24 Lưu ý rằng tất cả các ký tự đặc biệt đã bị xóa khỏi các giá trị trong cột nhóm Ghi chú. Regex \W được sử dụng để tìm tất cả các ký tự không phải là từ, tôi. e. các ký tự không phải là chữ cái hoặc số Trong ví dụ này, chúng tôi đã thay thế từng ký tự không phải từ bằng một giá trị trống tương đương với việc xóa các ký tự không phải từ Các phương thức chuỗi trên Chỉ mục đặc biệt hữu ích để dọn dẹp hoặc chuyển đổi các cột DataFrame. Chẳng hạn, bạn có thể có các cột có khoảng trắng ở đầu hoặc cuối In [9]: df = pd.DataFrame(randn(3, 2), columns=[' Column A ', ' Column B '], ...: index=range(3)) ...: In [10]: df Out[10]: Column A Column B 0 0.017428 0.039049 1 -2.240248 0.847859 2 -1.342107 0.368828 Vì df. cột là một đối tượng Chỉ mục, chúng ta có thể sử dụng . trình truy cập str accessor In [11]: df.columns.str.strip() Out[11]: Index([u'Column A', u'Column B'], dtype='object') In [12]: df.columns.str.lower() Out[12]: Index([u' column a ', u' column b '], dtype='object') Các phương thức chuỗi này sau đó có thể được sử dụng để dọn dẹp các cột khi cần thiết. Ở đây, chúng tôi đang xóa các khoảng trắng ở đầu và cuối, viết thường tất cả các tên và thay thế mọi khoảng trắng còn lại bằng dấu gạch dưới ________số 8_______ Tách và thay thế chuỗiCác phương thức như split trả về một Chuỗi danh sách. In [15]: s2 = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h']) In [16]: s2.str.split('_') Out[16]: 0 [a, b, c] 1 [c, d, e] 2 NaN 3 [f, g, h] dtype: object Có thể truy cập các phần tử trong danh sách phân tách bằng cách sử dụng get hoặc [] notation: In [17]: s2.str.split('_').str.get(1) Out[17]: 0 b 1 d 2 NaN 3 g dtype: object In [18]: s2.str.split('_').str[1] Out[18]: 0 b 1 d 2 NaN 3 g dtype: object Dễ dàng mở rộng phần này để trả về DataFrame bằng cách sử dụng mở rộng . In [19]: s2.str.split('_', expand=True) Out[19]: 0 1 2 0 a b c 1 c d e 2 NaN None None 3 f g h Cũng có thể giới hạn số lần chia In [20]: s2.str.split('_', expand=True, n=1) Out[20]: 0 1 0 a b_c 1 c d_e 2 NaN None 3 f g_h rsplit tương tự như split ngoại trừ nó hoạt động theo hướng ngược lại, i. e. , từ cuối chuỗi đến đầu chuỗi. In [21]: s2.str.rsplit('_', expand=True, n=1) Out[21]: 0 1 0 a_b c 1 c_d e 2 NaN None 3 f_g h Các phương thức như replace và findall nhận các biểu thức chính quy, . In [5]: idx = pd.Index([' jack', 'jill ', ' jesse ', 'frank']) In [6]: idx.str.strip() Out[6]: Index([u'jack', u'jill', u'jesse', u'frank'], dtype='object') In [7]: idx.str.lstrip() Out[7]: Index([u'jack', u'jill ', u'jesse ', u'frank'], dtype='object') In [8]: idx.str.rstrip() Out[8]: Index([u' jack', u'jill', u' jesse', u'frank'], dtype='object')0 Một số thận trọng phải được thực hiện để ghi nhớ các biểu thức thông thường. Ví dụ: đoạn mã sau sẽ gây rắc rối vì ý nghĩa biểu thức chính quy của $ Làm cách nào để kiểm tra xem một chuỗi có chứa ký tự đặc biệt trong Python không?Cách tiếp cận. Tạo một đối tượng biểu thức chính quy (regex) gồm tất cả các ký tự đặc biệt mà chúng ta không muốn, sau đó chuyển một chuỗi vào phương thức tìm kiếm . Nếu bất kỳ một ký tự nào của chuỗi khớp với đối tượng regex thì phương thức tìm kiếm sẽ trả về một đối tượng khớp nếu không thì trả về Không có.
DF['Col'] unique() trả về cái gì?Khung dữ liệu(). Phương thức unique() được sử dụng khi chúng ta xử lý một cột duy nhất của DataFrame và trả về tất cả các phần tử duy nhất của một cột . Phương thức này trả về một DataFrame chứa các phần tử duy nhất của một cột, cùng với các nhãn chỉ mục tương ứng của chúng. |