Code/Python

[Python]for문 전역 변수 일괄 적용, globals()

heedy 2022. 11. 4. 14:20
728x90

for문 진행 시 전역 변수를 일괄로 적용할 수 있는 함수입니다.
저는 주로 특정 문자로 시작하는 변수들로 이루어져 있는 데이터 프레임을 만들 때 사용합니다.


먼저, titanic 데이터를 불러옵니다.

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split, StratifiedKFold

import pandas as pd

# data load

df = pd.read_csv('train.csv')
df.head()

이제, 전역 변수를 설정합니다.
저는 A, P, C로 시작하는 변수들로 이루어진 데이터프레임을 각각 A, P, C로 지정하겠습니다.

이때는 globals()함수를 적용하면 됩니다.

먼저 startswith 함수를 사용하여 각 문자로 시작되는 컬럼을 뽑은 다음 데이터 프레임으로 만들어주면 됩니다.

li = ['A', 'P', 'C']

for i in li:
    globals()[f'{i}'] = df[df.columns[df.columns.str.startswith(i) == True]]

P를 보면 아래와 같이 데이터 프레임이 나옵니다.


- 변수를 소문자 or 대문자로 설정하고 싶다면?

lower() / upper() 함수를 사용하여 아래와 같이 코드를 짜면 됩니다.

li = ['A', 'P', 'C']

for i in li:
    globals()[f'{i}'.lower()] = df[df.columns[df.columns.str.startswith(i) == True]]
728x90