티스토리 뷰

728x90
반응형

 

geojson처럼 지도 관련 데이터는 properties라는 컬럼 안에 그 데이터의 정보가 모두 들어있습니다.

아래와 같은 데이터프레임이 있다고 했을 때, 프레임안에 있는 컬럼을 properties라는 딕셔너리 안에 담아서 새로 컬럼을 생성하도록 하는 방법입니다.

import pandas as pd
data = {
    'name': ['A', 'B', 'C'],
    'color': ['red', 'blue', 'yellow'],
    'value': [1,2,3]
}
df = pd.DataFrame(data)
df

 

 

딕셔너리안에 넣고싶은 컬럼명들을 넣어 to_dict으로 새 컬럼을 만들어주면 끝입니다. 참쉽죵?

출력해보면 properties라는 새 컬럼에 딕셔너리형태로 데이터들이 들어간 것을 확인할 수 있습니다.

df['properties'] = df[['name', 'color', 'value']].to_dict(orient='records')

 

모든 컬럼들을 집어넣으려면 df.keys()를 넣어주면 됩니다.

df['properties'] = df[df.keys()].to_dict(orient='records')

 

 

만약, 조건(if else)을 통해 처리를 한 후 넣어야한다면, 딕셔너리로 만들기 전에 lambda로 먼저 처리해줍니다.

예시로, test라는 함수를 만들어놓고, value에 있는 값을 조건으로하여 stringNumber, smallLetter라는 컬럼을 생성하도록 해봤습니다.

def test(val):
    if val == 1: return '1', 'a'
    elif val == 2: return '2', 'b'
    elif val == 3: return '3', 'c'
    else: return 'none', 'none'
    
df[['stringNumber', 'smallLetter']]  = df.apply(lambda x: test(x.value) , axis = 1).tolist()

 

 

다시 딕셔너리로 합체!

이렇게 원하는 컬럼들을 딕셔너리로 넣어 새컬럼 생성하기 끝!

df['properties'] = df[df.keys()].to_dict(orient='records')

728x90
반응형
댓글