암스트롱 숫자를 필터링하기 위한 시리즈와 결과가 있다고 가정합니다.
original series is 0 153 1 323 2 371 3 420 4 500 dtype: int64 Armstrong numbers are:- 0 153 2 371 dtype: int64
이 문제를 해결하기 위해 다음 단계를 따릅니다. -
-
시리즈를 정의하십시오.
-
빈 목록을 만들고 for 루프를 설정하여 모든 시리즈 데이터에 액세스합니다.
-
암스트롱 초기값을 0으로 설정하고 temp 변수를 생성하여 계열 요소를 하나씩 저장합니다. 아래에 정의되어 있습니다.
l = [] for val in data: armstrong = 0 temp = val
-
while 루프를 만들고 temp> 0을 확인하고 temp%10으로 나머지를 계산합니다. 나머지의 세제곱을 취하여 암스트롱 값을 추가하고 루프를 종료하기 위해 0에 도달할 때까지 임시 값을 10으로 나눕니다. 아래에 정의되어 있습니다.
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