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