Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리눅스
- ubuntu
- javascript
- 날짜
- MySQL
- mssql
- sqlite
- 함수
- swift
- ASP
- GIT
- flutter
- IOS
- node.js
- 라즈베리파이
- python
- 다이어트
- 맛집
- 유니티
- PyQt
- Linux
- Unity
- PER
- tensorflow
- port
- MS-SQL
- pandas
- PyQt5
- Excel
- urllib
Archives
아미(아름다운미소)
데이터프레임의 컬럼 타입을 지정된 타입으로 변경 본문
데이터프레임의 컬럼 타입을 지정된 타입으로 변경합니다.
예제1
def change_column_types(df, column_types):
"""
데이터프레임의 컬럼 타입을 지정된 타입으로 변경합니다.
Args:
df (pandas.DataFrame): 컬럼 타입을 변경할 데이터프레임
column_types (dict): 컬럼 이름과 타입을 매핑한 딕셔너리
"""
for col in df.columns:
if col in column_types:
try:
df[col] = df[col].astype(column_types[col])
except ValueError:
print(f"Failed to convert column '{col}' to type '{column_types[col]}'")
pass
return df
# 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4.0, 5.0, 6.0],
'C': [7, 8, 'a'],
'D': [10, 11, 12]
})
# 미리 저장된 딕셔너리
column_types = {
'A': 'int',
'B': 'int',
'C': 'int',
'D': 'int'
}
# 함수 호출
df_updated = change_column_types(df, column_types)
print(df_updated.dtypes)
예제2
import pandas as pd
def change_column_types(df, column_types):
"""
데이터프레임의 컬럼 타입을 지정된 타입으로 변경합니다.
Args:
df (pandas.DataFrame): 컬럼 타입을 변경할 데이터프레임
column_types (dict): 컬럼 이름과 타입을 매핑한 딕셔너리
"""
for col in df.columns:
if col in column_types:
try:
df[col] = df[col].astype(column_types[col])
print(f"컬럼 '{col}'의 타입을 '{column_types[col]}'로 변경했습니다.")
except ValueError:
print(f"컬럼 '{col}'의 데이터 타입을 '{column_types[col]}'로 변경할 수 없습니다.")
else:
print(f"컬럼 '{col}'은 미리 저장된 딕셔너리에 없습니다.")
return df
# 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4.0, 5.0, 6.0],
'C': [7, 8, 'a'],
'D': [10, 11, 12]
})
# 미리 저장된 딕셔너리
column_types = {
'A': 'int',
'B': 'int',
'C': 'int',
'D': 'int'
}
# 함수 호출
df_updated = change_column_types(df, column_types)
print(df_updated.dtypes)
누락값 처리부분 추가1
import pandas as pd
def change_column_types(df, column_types, fill_value=None):
"""
데이터프레임의 컬럼 타입을 지정된 타입으로 변경하고, 누락값을 처리합니다.
Args:
df (pandas.DataFrame): 컬럼 타입을 변경할 데이터프레임
column_types (dict): 컬럼 이름과 타입을 매핑한 딕셔너리
fill_value (any, optional): 누락값을 채울 값. 기본값은 None.
Returns:
pandas.DataFrame: 컬럼 타입이 변경되고 누락값이 처리된 데이터프레임
"""
df_updated = df.copy()
for col in df.columns:
if col in column_types:
current_type = df[col].dtype
target_type = column_types[col]
if current_type != target_type:
try:
df_updated[col] = df_updated[col].astype(target_type)
if fill_value is not None:
df_updated[col] = df_updated[col].fillna(fill_value)
except ValueError:
pass
return df_updated
# 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4.0, 5.0, 6.0],
'C': [7, 8, None],
'D': [10, 11, 12]
})
# 미리 저장된 딕셔너리
column_types = {
'A': 'int',
'B': 'int',
'C': 'int',
'D': 'int'
}
# 함수 호출
df_updated = change_column_types(df, column_types, fill_value=0)
print(df_updated.dtypes)
print(df_updated)
누락값 처리부분 추가2
import pandas as pd
def change_column_types(df, column_types, fill_value_str=None, fill_value_num=None):
"""
데이터프레임의 컬럼 타입을 지정된 타입으로 변경하고, 누락값을 처리합니다.
Args:
df (pandas.DataFrame): 컬럼 타입을 변경할 데이터프레임
column_types (dict): 컬럼 이름과 타입을 매핑한 딕셔너리
fill_value_str (any, optional): 문자열 컬럼의 누락값을 채울 값. 기본값은 None.
fill_value_num (any, optional): 숫자 컬럼의 누락값을 채울 값. 기본값은 None.
Returns:
pandas.DataFrame: 컬럼 타입이 변경되고 누락값이 처리된 데이터프레임
"""
df_updated = df.copy()
for col in df.columns:
if col in column_types:
current_type = df[col].dtype
target_type = column_types[col]
if current_type != target_type:
try:
df_updated[col] = df_updated[col].astype(target_type)
if target_type == 'object':
if fill_value_str is not None:
df_updated[col] = df_updated[col].fillna(fill_value_str)
else:
if fill_value_num is not None:
df_updated[col] = df_updated[col].fillna(fill_value_num)
except ValueError:
pass
return df_updated
# 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4.0, 5.0, 6.0],
'C': [7, 8, None],
'D': [10, 11, 'a']
})
# 미리 저장된 딕셔너리
column_types = {
'A': 'int',
'B': 'int',
'C': 'int',
'D': 'object'
}
# 함수 호출
df_updated = change_column_types(df, column_types, fill_value_str='unknown', fill_value_num=0)
print(df_updated.dtypes)
print(df_updated)
'랭귀지 > pandas' 카테고리의 다른 글
pandas 컬럼 마지막으로 이동 (0) | 2024.07.02 |
---|---|
컬럼명을 닥셔너리에 저장 후 불러쓰기 (0) | 2024.07.01 |
pandas 병렬처리 (0) | 2024.06.27 |
타입지정 (0) | 2024.06.26 |
pandas 날짜차이 분으로 환산 (0) | 2024.06.24 |
Comments