Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để sử dụng Python Pandas để tìm tổng số lần đếm cho nhiều hơn một ký tự đặc biệt có trong mỗi từ trong một chuỗi nhất định?

Đầu vào - Giả sử bạn có một chuỗi,

0       fruits!!
1       *cakes*
2       $nuts
3       #drinks
dtype: object

Đầu vào - Kết quả cho tổng số lần đếm của nhiều hơn một ký tự đặc biệt trong một chuỗi là 2.

Hãy để chúng tôi cố gắng tìm ra các giải pháp khác nhau cho câu hỏi này.

Giải pháp 1

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước dưới đây -

  • Xác định một chuỗi

  • Tạo danh sách giá trị các ký tự đặc biệt.

  • Đặt giá trị ban đầu của ký tự đặc biệt và tổng giá trị đếm ký tự đặc biệt là 0.

  • Tạo vòng lặp for và lần lượt truy cập tất cả các giá trị trong Chuỗi và tạo điều kiện if để so sánh giá trị dựa trên ký tự đặc biệt như sau -

for i in data:
   chars_count = 0
   for j in list(i):
      if j in special_char:
         chars_count = chars_count+1
  • Đặt điều kiện if và kiểm tra giá trị đếm. Nếu số đếm> 1, thì in tổng số.

    Nó được định nghĩa bên dưới -

if(chars_count>1):
   total_count = total_count+1
      print(total_count)

Giải pháp 2

Ngoài ra, chúng ta có thể sử dụng biểu thức chính quy và phương pháp lọc hàm lambda để tìm tổng số.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước dưới đây -

  • Xác định một chuỗi

  • Áp dụng phương pháp lọc lambda để xác thực đầu vào dựa trên char () đặc biệt.

  • Tìm chiều dài lớn hơn một. Nó được định nghĩa bên dưới -

l=["fruits!!","*cakes*","$nuts","#drinks"]
               data=pd.Series(filter(lambda
x:1<len(re.findall(r"\W",x)),l))

Ví dụ

Hãy cho chúng tôi xem việc triển khai để hiểu rõ hơn -

import pandas as pd
import string
l = ["Fruits!!","*Cakes*","$Nuts","#Drinks"]
data = pd.Series(l)
chars=string.punctuation
special_char=list(chars)
total_count = 0
for i in data:
   chars_count = 0
   for j in list(i):
      if j in special_char:
         chars_count = chars_count+1
   if(chars_count>1):
      total_count = total_count+1
print(total_count)

Giải pháp 3

Ví dụ

import pandas as pd
import re
l=["fruits!!","*cakes*","$nuts","#drinks"]
data=pd.Series(filter(lambda x:1<len(re.findall(r"\W",x)),l))
print("count:",len(data))

Đầu ra

Kết quả của chương trình trên như sau -

2