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

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


ผลลัพธ์สำหรับการพิมพ์ชื่อ 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