สมมติว่าคุณมีอนุกรมและผลการกรองหมายเลขอาร์มสตรอง
original series is 0 153 1 323 2 371 3 420 4 500 dtype: int64 Armstrong numbers are:- 0 153 2 371 dtype: int64
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนด้านล่าง -
-
กำหนดชุด
-
สร้างรายการว่างและตั้งค่าให้วนซ้ำเพื่อเข้าถึงข้อมูลซีรีส์ทั้งหมด
-
ตั้งค่าเริ่มต้นของอาร์มสตรองเป็น 0 และสร้างตัวแปร temp เพื่อเก็บองค์ประกอบชุดทีละรายการ มีการกำหนดไว้ด้านล่าง
l = [] for val in data: armstrong = 0 temp = val
-
สร้างในขณะที่วนซ้ำและตรวจสอบ temp> 0 และคำนวณส่วนที่เหลือโดย temp%10 เพิ่มค่าอาร์มสตรองโดยนำเศษที่เหลือมาหารค่า temp ด้วย 10 จนกว่าจะถึง 0 เพื่อยุติการวนซ้ำ มีการกำหนดไว้ด้านล่าง
while(temp>0): rem = temp % 10 armstrong = armstrong + (rem**3) temp = temp // 10
-
ตั้งค่าเงื่อนไขถ้าเปรียบเทียบค่าเดิมกับค่าชั่วคราว หากตรงกัน ให้ผนวกค่าเข้ากับรายการ
if(armstrong==val): l.append(val)
-
สุดท้าย ตรวจสอบรายการค่าที่มีอยู่ในชุดข้อมูลโดยใช้ isin() มีการกำหนดไว้ด้านล่าง
data[data.isin(l)]
ตัวอย่าง
มาดูโค้ดด้านล่างเพื่อการใช้งานที่ดีขึ้นกัน −
import pandas as pd data = pd.Series([153,323,371,420,500]) print("original series is\n", data) l = [] for val in data: armstrong = 0 temp = val while(temp>0): rem = temp % 10 armstrong = armstrong + (rem**3) temp = temp // 10 if(armstrong==val): l.append(val) print("Armstrong numbers are:-") print(data[data.isin(l)])
ผลลัพธ์
original series is 0 153 1 323 2 371 3 420 4 500 dtype: int64 Armstrong numbers are:- 0 153 2 371 dtype: int64