Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Viết mã Python lọc tên palindrome trong DataFrame cho trước


Kết quả in tên palindrome như sau:

Palindrome names are:
   Id   Name
0   1   bob
2   3   hannah

Để giải quyết bài toán này, chúng ta sẽ làm theo các cách tiếp cận dưới đây:

Giải pháp 1

  • Định nghĩa một DataFrame
  • Tạo list comprehension với vòng for truy xuất tất cả giá trị từ df['Name'] dùng biến i và điều kiện if so sánh i == i[::-1] thì thêm i vào list
l = [i for i in df['Name'] if i == i[::-1]]
  • Cuối cùng, kiểm tra giá trị list có trong cột df['Name'] bằng isin()
df[df['Name'].isin(l)]

Ví dụ

Hãy kiểm tra mã sau để hiểu rõ hơn:

import pandas as pd
data = {'Id': [1,2,3,4,5], 'Name': ['bob', 'peter', 'hannah', 'james', 'david']}
df = pd.DataFrame(data)
print("DataFrame is:\n", df)
l = [i for i in df['Name'] if i == i[::-1]]
print("Palindrome names are:\n", df[df['Name'].isin(l)])

Đầu ra

DataFrame is:
   Id    Name
0   1     bob
1   2   peter
2   3  hannah
3   4   james
4   5   david

Palindrome names are:
   Id   Name
0   1   bob
2   3  hannah

Giải pháp 2

  • Định nghĩa một DataFrame
  • Áp dụng lambda filter so sánh từng giá trị df['Name'] với reversed function có trả về cùng kết quả hay không. Nếu khớp thì lưu vào result list
result = list(filter(lambda x: x == "".join(reversed(x)), df['Name']))
  • Cuối cùng, kiểm tra giá trị list có trong cột df['Name'] bằng isin()
df[df['Name'].isin(result)]

Ví dụ

Hãy kiểm tra mã sau để hiểu rõ hơn:

import pandas as pd
data = {'Id': [1,2,3,4,5], 'Name': ['bob', 'peter', 'hannah', 'james', 'david']}
df = pd.DataFrame(data)
print("DataFrame is:\n", df)
result = list(filter(lambda x: x == "".join(reversed(x)), df['Name']))
print("Palindrome names are:\n", df[df['Name'].isin(result)])

Đầu ra

DataFrame is:
   Id    Name
0   1     bob
1   2   peter
2   3  hannah
3   4   james
4   5   david

Palindrome names are:
   Id   Name
0   1   bob
2   3  hannah