ผลลัพธ์สำหรับการพิมพ์ชื่อ Palindrome คือ −
Palindrome names are: Id Name 0 1 bob 2 3 hannah
เพื่อแก้ปัญหานี้ เราจะทำตามวิธีด้านล่าง −
Solution 1
กำหนด DataFrame
สร้าง List Comprehension ภายใน For Loop เข้าถึงค่าทั้งหมดจากคอลัมน์ df['Name'] ด้วยตัวแปร i และตั้ง If Condition เปรียบเทียบ i==i[::-1] แล้ว Add ค่า i เข้า List
l = [ i for i in df['Name'] if(i==i[::-1])]
สุดท้าย ตรวจสอบค่าใน List อยู่ในคอลัมน์ 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
Solution 2
กำหนด DataFrame
ใช้ Lambda Filter Function เปรียบเทียบค่าแต่ละตัวใน df['Name'] กับ Reversed Function ว่าให้ผลลัพธ์เดียวกันหรือไม่ หากตรงกัน เก็บไว้ใน Result List
result = list(filter(lambda x:(x=="".join(reversed(x))),df['Name']))
สุดท้าย ตรวจสอบค่าใน List อยู่ในคอลัมน์ 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