이 글에서는 pandas DataFrame의 첫 번째 열을 오른쪽으로 이동(shift)하고, 사용자로부터 입력받은 값이 3과 5로 모두 나누어지는 경우 누락된 값을 해당 값으로 채우는 Python 프로그램을 작성하는 방법을 단계별로 알아보겠습니다.
입력 예시
다음과 같은 DataFrame이 있다고 가정해 보겠습니다. 첫 번째 열을 이동하고 누락된 값을 채우면 결과는 아래와 같습니다.
one two three
0 1 10 100
1 2 20 200
2 3 30 300
enter the value 15
one two three
0 15 1 10
1 15 2 20
2 15 3 30
해결 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
먼저 DataFrame을 정의합니다.
아래 코드를 사용하여 첫 번째 열을 이동합니다.
data.shift(periods=1,axis=1)
사용자로부터 값을 입력받고, 그 값이 3과 5로 나누어지는지 확인합니다. 조건이 참이면 fill_value 옵션을 사용해 누락된 값을 사용자가 입력한 값으로 채우고, 그렇지 않으면 기본 동작대로 NaN으로 남겨둡니다.
user_input = int(input("enter the value"))
if(user_input%3==0 and user_input%5==0):
print(data.shift(periods=1,axis=1,fill_value=user_input))
else:
print(data.shift(periods=1,axis=1))전체 코드 예제
더 잘 이해할 수 있도록 전체 구현 과정을 살펴보겠습니다.
import pandas as pd
data= pd.DataFrame({'one': [1,2,3],
'two': [10,20,30],
'three': [100,200,300]})
print(data)
user_input = int(input("enter the value"))
if(user_input%3==0 and user_input%5==0):
print(data.shift(periods=1,axis=1,fill_value=user_input))
else:
print(data.shift(periods=1,axis=1))
출력 1
입력값이 15인 경우(3과 5로 모두 나누어지므로 누락된 값이 15로 채워집니다):
one two three
0 1 10 100
1 2 20 200
2 3 30 300
enter the value 15
one two three
0 15 1 10
1 15 2 20
2 15 3 30
출력 2
입력값이 3인 경우(3으로는 나누어지지만 5로는 나누어지지 않으므로 누락된 값이 NaN으로 표시됩니다):
one two three
0 1 10 100
1 2 20 200
2 3 30 300
enter the value 3
one two three
0 NaN 1.0 10.0
1 NaN 2.0 20.0
2 NaN 3.0 30.0
핵심 포인트 정리
shift(periods=1, axis=1): 열 방향(axis=1)으로 데이터를 한 칸씩 이동하며, 맨 앞에 새로운 결측치(NaN)가 생성됩니다.
fill_value: shift 연산 시 발생하는 결측치를 지정한 값으로 대체하는 옵션입니다.
나눗셈 조건 확인: user_input % 3 == 0 and user_input % 5 == 0 조건문으로 입력값이 3과 5의 공배수인지 검사합니다.