웹사이트 검색

Pandas는 pivot() 함수를 사용하여 용융() 및 녹지 않습니다.


Pandas의 melt() 함수는 DataFrame 형식을 와이드에서 롱으로 변경하는 데 사용됩니다. 하나 이상의 열이 식별자로 작동하는 DataFrame 개체의 특정 형식을 만드는 데 사용됩니다. 나머지 모든 열은 값으로 처리되고 행 축과 변수 및 값의 두 열만 피벗 해제됩니다.

1. 팬더 용융() 예제

melt() 함수의 사용은 예제를 통해 보면 더 명확합니다.

import pandas as pd

d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]}

df = pd.DataFrame(d1)

print(df)

df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"])

print(df_melted)

산출:

     Name  ID    Role
0  Pankaj   1     CEO
1    Lisa   2  Editor
2   David   3  Author

   ID variable   value
0   1      Name  Pankaj
1   2      Name    Lisa
2   3      Name   David
3   1      Role     CEO
4   2      Role  Editor
5   3      Role  Author

'var_name' 및 'value_name' 매개 변수를 전달하여 'variable' 및 'value'의 열 이름을 변경할 수 있습니다.

df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value")

권장 읽기: Python Pandas 자습서

2. id_vars로 여러 열

여러 열을 id_vars 매개변수로 전달할 때 어떤 일이 발생하는지 살펴보겠습니다.

df_melted = pd.melt(df, id_vars=["ID", "Name"], value_vars=["Role"])
print(df_melted)

산출:

   ID    Name variable   value
0   1  Pankaj     Role     CEO
1   2    Lisa     Role  Editor
2   3   David     Role  Author

3. melt() 함수에서 열 건너뛰기

소스 DataFrame의 모든 행을 사용할 필요는 없습니다. 다음 예에서 \ID 열은 건너뛰겠습니다.

df_melted = pd.melt(df, id_vars=["Name"], value_vars=["Role"])
print(df_melted)

산출:

     Name variable   value
0  Pankaj     Role     CEO
1    Lisa     Role  Editor
2   David     Role  Author

4. pivot() 함수를 사용하여 DataFrame 녹이기

우리는 pivot() 함수를 사용하여 DataFrame 객체를 녹이지 않고 원본 데이터 프레임을 얻을 수 있습니다. pivot() 함수의 'index' 매개변수 값은 'id_vars' 값과 같아야 합니다. 'columns' 값은 '변수' 열의 이름으로 전달되어야 합니다.

import pandas as pd

d1 = {"Name": ["Pankaj", "Lisa", "David"], "ID": [1, 2, 3], "Role": ["CEO", "Editor", "Author"]}

df = pd.DataFrame(d1)

# print(df)

df_melted = pd.melt(df, id_vars=["ID"], value_vars=["Name", "Role"], var_name="Attribute", value_name="Value")

print(df_melted)

# unmelting using pivot()

df_unmelted = df_melted.pivot(index='ID', columns='Attribute')

print(df_unmelted)

산출:

   ID Attribute   Value
0   1      Name  Pankaj
1   2      Name    Lisa
2   3      Name   David
3   1      Role     CEO
4   2      Role  Editor
5   3      Role  Author

            Value        
Attribute    Name    Role
ID                       
1          Pankaj     CEO
2            Lisa  Editor
3           David  Author

녹지 않은 DataFrame 값은 원본 DataFrame과 동일합니다. 그러나 열과 인덱스는 원본 데이터 프레임과 정확히 동일하게 만들기 위해 약간의 변경이 필요합니다.

df_unmelted = df_unmelted['Value'].reset_index()
df_unmelted.columns.name = None
print(df_unmelted)

산출:

   ID    Name    Role
0   1  Pankaj     CEO
1   2    Lisa  Editor
2   3   David  Author

참조: pandas melt() API 문서