Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโค้ด Python เพื่อกรองชื่อ palindrome ใน dataframe ที่กำหนด


ผลลัพธ์สำหรับการพิมพ์ชื่อพาลินโดรมคือ −

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