ผลลัพธ์สำหรับการพิมพ์ชื่อพาลินโดรมคือ −
Palindrome names are: Id Name 0 1 bob 2 3 hannah
เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางด้านล่าง -
โซลูชันที่ 1
-
กำหนดดาต้าเฟรม
-
สร้าง list comprehension ภายใน set for loop เพื่อเข้าถึงค่าทั้งหมดจากคอลัมน์ df[‘Name’] โดยใช้ตัวแปร i และตั้งค่า if condition เพื่อเปรียบเทียบ i==i[::-1] แล้วเพิ่มค่า i ให้กับรายการ
l = [ i for i in df['Name'] if(i==i[::-1])]
-
สุดท้าย ตรวจสอบรายการค่าที่มีอยู่ในคอลัมน์ df['Name'] โดยใช้ isin()
df[df['Name'].isin(l)]
ตัวอย่าง
มาตรวจสอบรหัสต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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)])
ผลลัพธ์
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
โซลูชันที่ 2
-
กำหนดดาต้าเฟรม
-
ใช้ฟังก์ชันตัวกรองแลมบ์ดาเพื่อเปรียบเทียบ df['Name'] แต่ละค่าที่มีฟังก์ชันย้อนกลับจะส่งคืนผลลัพธ์เดียวกันหรือไม่ หากค่าตรงกัน ให้เก็บเป็นรายการผลลัพธ์
result = list(filter(lambda x:(x=="".join(reversed(x))),df['Name']
-
สุดท้าย ตรวจสอบรายการค่าที่มีอยู่ในคอลัมน์ df['Name'] โดยใช้ isin()
df[df['Name'].isin(result)]
ตัวอย่าง
มาตรวจสอบรหัสต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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)])
ผลลัพธ์
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