Xóa các ký tự không phải chữ và số Python DataFrame

Tôi có một cột DF có nhiều chuỗi trong đó. Tôi cần xóa tất cả các ký tự số không phải alpha khỏi cột đó. tôi. e

df['strings'] = ["a#bc1!","a[b$c"]

Mã vận hành

Print[df['strings']]: ['abc','abc']

tôi đã thử

df['strings'].replace[[',','.','/','"',':',';','!','@','#','$','%',"'","*","[","]","&",],""]

Nhưng điều này không hiệu quả và tôi cảm thấy rằng nên có một cách hiệu quả hơn để thực hiện việc này bằng cách sử dụng regex. Bất kỳ trợ giúp sẽ được rất đánh giá cao

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

Sử dụng str.replace

df
  strings
0  a#bc1!
1   a[b$c

df.strings.str.replace['[^a-zA-Z]', '']
0    abc
1    abc
Name: strings, dtype: object

Để giữ lại các ký tự chữ và số [không chỉ bảng chữ cái như đầu ra dự kiến ​​của bạn gợi ý], bạn sẽ cần

df.strings.str.replace['\W', '']
0    abc1
1     abc
Name: strings, dtype: object 

Giải pháp liên quan

Python – Cách xóa phần tử khỏi danh sách theo chỉ mục

Sử dụng

Print[df['strings']]: ['abc','abc']
0 và chỉ định chỉ mục của phần tử bạn muốn xóa

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[-1]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8]

Cũng hỗ trợ lát

>>> del a[2:4]
>>> a
[0, 1, 4, 5, 6, 7, 8, 9]

là phần từ hướng dẫn

R - Cách sắp xếp một khung dữ liệu theo nhiều cột

Bạn có thể sử dụng trực tiếp hàm

Print[df['strings']]: ['abc','abc']
1 mà không cần dùng đến các công cụ bổ sung -- xem câu trả lời đơn giản hơn này sử dụng một mẹo ngay từ đầu mã
Print[df['strings']]: ['abc','abc']
2

R> dd[with[dd, order[-z, b]], ]
    b x y z
4 Low C 9 2
2 Med D 3 1
1  Hi A 8 1
3  Hi A 9 1

Chỉnh sửa khoảng hơn 2 năm sau. Nó chỉ được hỏi làm thế nào để làm điều này theo chỉ số cột. Câu trả lời là chỉ cần chuyển [các] cột sắp xếp mong muốn cho hàm

Print[df['strings']]: ['abc','abc']
1

Trong hướng dẫn này, chúng ta sẽ xem xét cách xóa các ký tự không phải chữ và số khỏi một chuỗi trong Python với sự trợ giúp của một số ví dụ

Các ký tự chữ và số là gì?

Một ký tự là một ký tự chữ và số nếu đó là một bảng chữ cái [a đến z, A đến Z] hoặc một chữ số [0 đến 9]. Ví dụ: chuỗi striker123 chỉ chứa các ký tự chữ và số trong khi chuỗi striker_123 chứa một ký tự không phải chữ và số ['_']

[email protected]#$_123" # remove non alphanuemeric characters new_s = ''.join[c for c in s if c.isalnum[]] print[new_s]

đầu ra

Striker123

Bạn có thể thấy rằng chuỗi kết quả không có bất kỳ ký tự nào không phải chữ và số. Ở đây, chúng tôi lặp lại tất cả các ký tự trong chuỗi gốc và chỉ giữ lại ký tự đó nếu đó là ký tự chữ và số mà chúng tôi kiểm tra bằng hàm chuỗi isalnum[]. Sau đó, chúng tôi sử dụng hàm chuỗi

True
True
True
False
False
1 để nối từng ký tự

Sử dụng biểu thức chính quy để xóa các ký tự không phải chữ và số

Chúng ta cũng có thể sử dụng các biểu thức chính quy để loại bỏ các ký tự như vậy. Ví dụ: chúng ta có thể viết một biểu thức chính quy để khớp với tất cả các ký tự không phải chữ và số trong chuỗi và sau đó thay thế chúng bằng một chuỗi rỗng. Bạn có thể sử dụng thư viện

True
True
True
False
False
6 trong Python để triển khai khớp mẫu biểu thức chính quy

import re

# string with non alphanumeric characters
s = "[email protected]#$_123"
# remove non alphanuemeric characters
new_s = re.sub[r'[^a-zA-Z0-9]', '', s]
print[new_s]

đầu ra

Striker123

Chúng tôi nhận được kết quả tương tự như trên

Để biết thêm về các biểu thức chính quy trong Python, hãy tham khảo hướng dẫn này

Bạn cũng có thể quan tâm đến -

  • Xóa ký tự đầu tiên khỏi chuỗi trong Python
  • Xóa ký tự cuối cùng khỏi chuỗi trong Python


Đăng ký nhận bản tin của chúng tôi để biết thêm thông tin hướng dẫn và hướng dẫn
Chúng tôi không spam và bạn có thể từ chối bất cứ lúc nào


Tác giả

  • Piyush Raj

    Piyush là một chuyên gia 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. Trước đây, anh ấy từng là Nhà khoa học dữ liệu cho ZS và có bằng kỹ sư của IIT Roorkee. Sở thích của anh ấy bao gồm xem cricket, đọc sách và làm việc trong các dự án phụ

    Làm cách nào để xóa các ký tự không phải là số khỏi Khung dữ liệu Python?

    Vì vậy, để xóa tất cả các ký tự không phải là số khỏi một cột trong pandas. Sau khi tạo khung dữ liệu, hãy sử dụng Sê-ri. str. phương thức replace[] để thay thế các ký tự không phải là số .

    Làm cách nào để xóa các ký tự không phải chữ và số khỏi chuỗi trong Python?

    Xóa các ký tự không phải chữ và số khỏi chuỗi Python .
    Sử dụng biểu thức chính quy. Một giải pháp đơn giản là sử dụng các biểu thức chính quy để xóa các ký tự không phải chữ và số khỏi chuỗi. .
    Sử dụng hàm isalnum[]. Một tùy chọn khác là lọc chuỗi khớp với hàm isalnum[]

    Làm cách nào để xóa các ký tự đặc biệt khỏi cột khung dữ liệu trong Python?

    Thêm df = df. astype[float] sau khi thay thế và bạn đã có nó. Tôi sẽ bỏ qua inplace và chỉ làm df = df. replace['\*', '', regex=True] .

    Làm cách nào để kiểm tra xem giá trị cột có phải là chữ và số trong gấu trúc không?

    Pandas str. phương thức isalpha[] được sử dụng để kiểm tra xem tất cả các ký tự trong mỗi chuỗi trong chuỗi có phải là chữ cái không [a-z/A-Z]. Khoảng trắng hoặc bất kỳ ký tự nào khác xuất hiện trong chuỗi sẽ trả về false, nhưng nếu có một giá trị số hoàn chỉnh thì nó sẽ trả về NaN.

Chủ Đề