Pandas에서 부동 소수점을 정수로 변환하는 방법
데이터프레임에서 특정 컬럼의 값을 부동 소수점에서 정수로 변환해야 하는 경우가 있습니다. 이를 위해 다음과 같은 몇 가지 방법을 사용할 수 있습니다.
astype() 함수 사용:
astype()
함수는 데이터프레임 컬럼의 데이터 타입을 원하는 타입으로 변환하는 데 사용되는 유용한 함수입니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼을 정수형으로 변환
df['col1'] = df['col1'].astype(int)
print(df)
위 코드는 다음과 같은 결과를 출력합니다.
col1 col2
0 1 abc
1 2 def
2 4 ghi
floor() 함수 사용:
floor()
함수는 부동 소수점 값을 가장 가까운 정수 아래로 반올림합니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].floor()
print(df)
col1 col2
0 1 abc
1 2 def
2 4 ghi
round() 함수 사용:
round()
함수는 지정된 소수 자릿수까지 반올림합니다. 소수 자릿수를 0으로 설정하면 소수점 이하를 버리고 정수를 반환합니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].round(0)
print(df)
col1 col2
0 1 abc
1 2 def
2 4 ghi
주의:
- 부동 소수점을 정수로 변환하면 소수점 이하의 정보가 손실됩니다. 중요한 정보 손실이 발생하지 않도록 변환을 수행하기 전에 데이터를 주의 깊게 검토해야 합니다.
- 데이터프레임에서 여러 컬럼을 동시에 변환해야 하는 경우
apply()
함수를 사용할 수 있습니다.
예제 코드: Pandas에서 부동 소수점을 정수로 변환
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼을 정수형으로 변환
df['col1'] = df['col1'].astype(int)
print(df)
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].floor()
print(df)
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].round(0)
print(df)
apply() 함수 사용:
import pandas as pd
def f(x):
return int(x)
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].apply(f)
print(df)
위 코드는 모두 동일한 결과를 출력합니다:
col1 col2
0 1 abc
1 2 def
2 4 ghi
Pandas에서 부동 소수점을 정수로 변환하는 대체 방법
lambda 함수 사용:
lambda
함수를 사용하여 astype()
또는 apply()
함수와 함께 간단하고 명확한 코드를 작성할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼을 정수형으로 변환
df['col1'] = df['col1'].apply(lambda x: int(x))
print(df)
to_numeric() 함수 사용:
to_numeric()
함수는 문자열 열을 다른 수치형으로 변환하는 데 사용할 수 있습니다. errors='coerce'
매개 변수를 설정하면 변환할 수 없는 값을 NaN으로 변환합니다. 이후 fillna()
함수를 사용하여 NaN 값을 원하는 값으로 처리할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2, '5.7'], 'col2': ['abc', 'def', 'ghi', 'jkl']})
# 'col1' 컬럼을 정수형으로 변환
df['col1'] = pd.to_numeric(df['col1'], errors='coerce')
df['col1'] = df['col1'].fillna(0).astype(int)
print(df)
numpy
라이브러리의 trunc()
함수를 사용하여 부동 소수점 값을 가장 가까운 정수 아래로 자를 수 있습니다.
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = np.trunc(df['col1'])
print(df)
import pandas as pd
import math
# 데이터프레임 생성
df = pd.DataFrame({'col1': [1.5, 2.3, 4.2], 'col2': ['abc', 'def', 'ghi']})
# 'col1' 컬럼의 값을 정수로 변환
df['col1'] = df['col1'].apply(math.floor)
print(df)
python pandas dataframe