데이터분석/Python Pandas

<Python Pandas> 행,열 추가 제거

창조적생각 2021. 8. 14. 15:44

목차 

 

1. columns 합치기

 

2. columns 제거하기

 

3. columns 나누기

 

4. row 추가하기

 

5. rows 추가하기(표 합치기)

 

6. rows 제거하기

 

 

1. columns 합치기

 

먼저 pandas를 이용해 데이터프레임을 짜줍니다. 

 

합치고 싶은 column들을 df[]를 통해서 잡아서 +로 합쳐줍니다.

 

저는 중간에  공백을 남겨두고 합칠 것입니다. 그래야 나중에 다시 나눌 때  공백을 이용해서 쉽게 나눌 수 있기 때문입니다.

 

그리고 표에 적용을 하고 싶다면 새로운 column을 만들어서 넣어 줘야 합니다. 새로운 column의 이름은 'name_address'로 하겠습니다.

 

이제 'name'과 'address'를 합쳐서 'name_address' 행을 만들었으니, 'name'과 'address'를 삭제해 보겠습니다.

 

2. columns 삭제하기

 

column을 삭제하기 위해서는 df.drop(columns =['지우고 싶은 column의 이름'])을 사용하면 됩니다.

저는 'name'과 'address' columns를 지우고 싶습니다.

그렇다면 df.drop(columns =['name'],['address'])를 사용하면 됩니다.

 

표에 적용하기 위해 inplace = True 를 추가해 줍니다.

제거를 하고 행을 합쳐보았으니 다시 나누어 봐야 겠지요.

 

3. columns 나누기

 

이전에 columns를 합칠 때 공백을 추가한 것을 기억하실 겁니다. 그 공백을 구분자로 사용하여 두 columns로 나누겠습니다. 구분자를 이용해 나누기 위해서는 str클래스에 split()을 사용합니다.

 

df['나누고자하는 column'].str.split(' ')

 

를 사용하시면 됩니다.

그리고 표에 반영하기 위해서 expand = True를 사용해 주시고

실제 표에 반영하기 위해서는 df에 각각 나눠진 데이터들이 들어갈 columns의 이름들을 지정해주고 넣어주면 됩니다.

 

df[['나눠진 데이터가 들어간 행'],['나눠진 데이터가 들어간 행']] = df['나눌 column'].str.(' ', expend = True)

 

이제 colums를 다뤄보았으니 rows를 다뤄보겠습니다.

 

4. row 추가하기

df.append({'column이름:데이터'})를 사용하시면 index 때문에 들어가지 않습니다.

그렇기 때문에 ingnore_index=True를 추가해 주셔야 합니다.

df.append({'column이름:데이터'}, ingnore_index=True)

 

하나의 데이터를 추가해 보았으니 여러개의 rows를 추가해 보겠습니다.

 

5. 여러개의 rows 추가하기 (표 합치기)

 

people 라는 dic 자료형에 앞선 표의 양식과 같은 columns와 데이터들을 추가해줍니다.

 

그리고 df2에 저장을 합니다.

기존 데이터 프레임인 df에 df2를 이어 붙어줍니다.

df.append(df2, ignore_index = True, sort = False)

sort = False 는 따로 정렬할 필요 없다는 것입니다.

그리고 df를 완전하게 바꿔주기 위해 앞서서 합친 표를 df에 저장하겠습니다.

 

df = df.append(df2, ignore_index = True, sort = False)

rows를 추가해 보았으니 이제 rows를 제거해보겠습니다.

 

6. rows 제거하기

 

row를 제거하기 위해서는 index번호를 이용하여 drop()를 통해서 제거가 가능합니다.

 

df.drop(index = 제거를 원하는 row의 index번호) 

 

여기서도 원래 표에 적용하기 위해서 inplace = True를 붙여야합니다.

7.필터를 적용해서 원하는 row 제거하기

이전에 배웠던 데로 filt = df['colum 이름'] 원하는 조건 을 사용하여 원하는 row를 골라서 제거할수 있습니다.

 

저는 나이가 24살인 rows를 제거하고 싶습니다. 그렇다면

 

filt = df['age'] == '24'

 

로 작성해주고

df.drop(index=df[filt].index)

 

를 사용하면됩니다.

728x90