Hướng dẫn find string in column python - tìm chuỗi trong cột python
Python là một ngôn ngữ tuyệt vời để phân tích dữ liệu, chủ yếu là do hệ sinh thái tuyệt vời của các gói Python tập trung vào dữ liệu. Pandas là một trong những gói đó và giúp nhập và phân tích dữ liệu dễ dàng hơn nhiều.Pandas str.find () phương thức được sử dụng để tìm kiếm một chuỗi con trong mỗi chuỗi có trong một chuỗi. Nếu chuỗi được tìm thấy, nó sẽ trả về chỉ số thấp nhất của sự xuất hiện của nó. Nếu chuỗi không được tìm thấy, nó sẽ trả về -1. & Nbsp; điểm bắt đầu và điểm cuối cũng có thể được truyền để tìm kiếm một phần cụ thể của chuỗi cho ký tự được truyền hoặc chuỗi con. & NBSP;Pandas is one of those packages and makes importing and analyzing data much easier. Show
Để tải xuống CSV được sử dụng trong mã, bấm vào đây. Trong các ví dụ sau, khung dữ liệu được sử dụng chứa dữ liệu của một số người chơi NBA. Hình ảnh của khung dữ liệu trước khi bất kỳ hoạt động nào được đính kèm bên dưới. & Nbsp; & nbsp; & nbsp; & nbsp; Ví dụ #1: Tìm một ký tự đơn ví dụ này, một ký tự duy nhất ‘A, được tìm kiếm trong mỗi chuỗi cột tên bằng phương thức str.find (). Tham số bắt đầu và kết thúc được giữ mặc định. Chuỗi được trả về được lưu trữ trong một cột mới để các chỉ mục có thể được so sánh bằng cách nhìn trực tiếp. Trước khi áp dụng phương pháp này, các hàng null được bỏ bằng .dropna () để tránh lỗi. & Nbsp; Python3Đầu ra: & nbsp; Như được hiển thị trong hình ảnh đầu ra, sự xuất hiện của chỉ mục trong cột chỉ mục bằng vị trí xuất hiện đầu tiên của ký tự trong chuỗi. Nếu phần phụ không tồn tại trong văn bản, -1 được trả về. Nó cũng có thể được nhìn thấy bằng cách nhìn vào hàng đầu tiên rằng ’một người đã được xem xét chứng minh phương pháp này là trường hợp nhạy cảm. & Nbsp; & nbsp; & nbsp; & nbsp; Ví dụ #2: Tìm kiếm chuỗi con (nhiều hơn một ký tự) trong ví dụ này, Substring er er sẽ được tìm kiếm trong cột tên của khung dữ liệu. Tham số bắt đầu được giữ 2 để bắt đầu tìm kiếm từ phần tử thứ 3 (vị trí chỉ mục 2). & Nbsp; Python3Đầu ra: & nbsp; Như được hiển thị trong hình ảnh đầu ra, chỉ số lest về sự xuất hiện của chuỗi con được trả về. Nhưng có thể thấy, trong trường hợp Terry Rozier (hàng 9 trong khung dữ liệu), thay vì lần đầu tiên xảy ra ‘er, 10 đã được trả lại. Điều này là do tham số bắt đầu được giữ 2 và lần đầu tiên xảy ra trước đó. & Nbsp; & nbsp;
Làm thế nào để tôi chọn bởi chuỗi một phần từ gấu trúc DataFrame?
Hiểu lý do đằng sau "ValueError: Không thể lập chỉ mục với vectơ chứa các giá trị Na / NAN" và sửa nó bằng 2... và muốn biết thêm về những phương pháp nào nên được ưu tiên hơn người khác.
Tuyên bố miễn trừ trách nhiệm thân thiện, đây là bài viết dài.
Tìm kiếm cơ bản 3 có thể được sử dụng để thực hiện tìm kiếm phụ hoặc tìm kiếm dựa trên regex. Tìm kiếm mặc định dựa trên regex trừ khi bạn vô hiệu hóa rõ ràng nó.
Đây là một ví dụ về tìm kiếm dựa trên regex,
Đôi khi không cần tìm kiếm regex, vì vậy chỉ định 4 để vô hiệu hóa nó.
Hiệu suất khôn ngoan, tìm kiếm regex chậm hơn so với tìm kiếm chuỗi con: Tránh sử dụng tìm kiếm dựa trên regex nếu bạn không cần nó.
Giải quyết các 5s đôi khi, thực hiện tìm kiếm và lọc trong kết quả sẽ dẫn đến
Điều này thường là do dữ liệu hỗn hợp hoặc nans trong cột đối tượng của bạn,
Bất cứ điều gì không phải là một chuỗi không thể có các phương thức chuỗi được áp dụng trên nó, vì vậy kết quả là NAN (một cách tự nhiên). Trong trường hợp này, chỉ định
Làm cách nào để áp dụng điều này cho nhiều cột cùng một lúc? Câu trả lời là trong câu hỏi. Sử dụng 7:Tất cả các giải pháp dưới đây có thể được "áp dụng" cho nhiều cột bằng phương pháp 8 theo cột (không ổn trong cuốn sách của tôi, miễn là bạn không có quá nhiều cột).Nếu bạn có khung dữ liệu với các cột hỗn hợp và chỉ muốn chọn các cột đối tượng/chuỗi, hãy xem df2 = pd.concat([df1] * 1000, ignore_index=True) %timeit df2[df2['col'].str.contains('foo')] %timeit df2[df2['col'].str.contains('foo', regex=False)] 6.31 ms ± 126 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) 2.8 ms ± 241 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) 9.Tìm kiếm nhiều chuỗi con
Điều này dễ dàng đạt được thông qua tìm kiếm regex bằng cách sử dụng regex hoặc ống.
Bạn cũng có thể tạo một danh sách các điều khoản, sau đó tham gia với chúng: 0Đôi khi, thật khôn ngoan khi thoát khỏi các điều khoản của bạn trong trường hợp họ có các nhân vật có thể được hiểu là những người điều khiển Regex. Nếu các điều khoản của bạn chứa bất kỳ ký tự nào sau đây ... 1Sau đó, bạn sẽ cần sử dụng 0 để thoát khỏi chúng: 2Phù hợp với toàn bộ (các) từTheo mặc định, tìm kiếm tìm kiếm chuỗi con cho chuỗi con/mẫu được chỉ định bất kể nó có đầy đủ hay không. Để chỉ khớp với các từ đầy đủ, chúng ta sẽ cần sử dụng các biểu thức thông thường ở đây, cụ thể, mẫu của chúng ta sẽ cần chỉ định các ranh giới từ ( 2).Ví dụ, 3Bây giờ hãy xem xét, 4v/s 5Nhiều tìm kiếm toàn bộ từTương tự như ở trên, ngoại trừ chúng tôi thêm một ranh giới từ ( 2) vào mẫu được nối. 6Nơi 4 trông như thế này, 7Một sự thay thế tuyệt vời: Sử dụng toàn bộ danh sách!Bởi vì bạn có thể! Và bạn nên! Chúng thường nhanh hơn một chút so với các phương thức chuỗi, bởi vì các phương thức chuỗi rất khó để vectorise và thường có các triển khai vòng lặp. Thay vì, 8Sử dụng toán tử 5 bên trong danh sách comp, 9Thay vì, 0Sử dụng toán tử 5 bên trong danh sách comp, 1Sử dụng 6 (để lưu trữ regex của bạn) + 7 bên trong danh sách comp, 2Use, 3Nếu "col" có nans, thì thay vìThêm tùy chọn để khớp chuỗi một phần: 8, 9, 0.Ngoài 4
4 methods. 5 9 Đây là một trình bao bọc xung quanh một vòng lặp, nhưng với chi phí thấp hơn hầu hết các phương thức 4. 6Giải pháp Regex có thể: 7 0 hỗ trợ các phương thức chuỗi thông qua động cơ Python. Điều này không cung cấp lợi ích hiệu suất rõ ràng, nhưng dù sao cũng hữu ích để biết nếu bạn cần tự động tạo ra các truy vấn của mình.Thông tin thêm về s = pd.Series(['foo', 'foobar', np.nan, 'bar', 'baz', 123]) s.str.contains('foo|bar') 0 True 1 True 2 NaN 3 True 4 False 5 NaN dtype: object s[s.str.contains('foo|bar')] # --------------------------------------------------------------------------- # ValueError Traceback (most recent call last) 6 và s = pd.Series(['foo', 'foobar', np.nan, 'bar', 'baz', 123]) s.str.contains('foo|bar') 0 True 1 True 2 NaN 3 True 4 False 5 NaN dtype: object s[s.str.contains('foo|bar')] # --------------------------------------------------------------------------- # ValueError Traceback (most recent call last) 7 Các phương pháp có thể được tìm thấy khi tự động đánh giá một biểu thức từ một công thức trong gấu trúc.
|