📜  Python|熊猫 dataframe.melt()(1)

📅  最后修改于: 2023-12-03 15:19:21.126000             🧑  作者: Mango

Python | 熊猫 DataFrame.melt()

概述

DataFrame.melt()pandas库中的一个函数,用于在熊猫数据框中转置或重塑数据。它是一个功能强大的函数,允许将宽格式的数据转换为长格式,并可以按需解除数据集中的任意列。

语法
DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
参数
  • id_vars:需要保留的列(标识符变量),不进行重塑的列。默认为None,表示重塑整个数据框。
  • value_vars:需要重塑的列(测量变量)。默认为None,表示重塑整个数据框。
  • var_name:指定用于标识value_vars列的列名。默认为None,表示使用默认列名variable
  • value_name:指定用于存储value_vars列中值的列名。默认为'value'
  • col_level:当列索引是多级的时候,指定从哪个级别开始重置(unpack)。默认为None
  • ignore_index:如果设置为True,则重置行索引。默认为True
返回值

返回一个包含重塑后数据的新熊猫数据框。

示例

首先,让我们创建一个示例数据框以进行演示:

import pandas as pd

data = {'Name': ['John', 'Mike', 'Sarah'],
        'Maths': [85, 68, 92],
        'Science': [78, 90, 88],
        'History': [82, 75, 95]}

df = pd.DataFrame(data)
print(df)

输出:

   Name  Maths  Science  History
0  John     85       78       82
1  Mike     68       90       75
2 Sarah     92       88       95
示例1:转置整个数据框
melted_df = df.melt()
print(melted_df)

输出:

   variable  value
0      Name   John
1      Name   Mike
2      Name  Sarah
3     Maths     85
4     Maths     68
5     Maths     92
6   Science     78
7   Science     90
8   Science     88
9   History     82
10  History     75
11  History     95
示例2:指定保留的列和重塑的列
melted_df = df.melt(id_vars='Name', value_vars=['Maths', 'Science'], var_name='Subject', value_name='Grade')
print(melted_df)

输出:

   Name  Subject  Grade
0  John    Maths     85
1  Mike    Maths     68
2 Sarah    Maths     92
3  John  Science     78
4  Mike  Science     90
5 Sarah  Science     88
示例3:多级列索引的处理
data = {'Name': ['John', 'Mike', 'Sarah'],
        ('Marks', 'Maths'): [85, 68, 92],
        ('Marks', 'Science'): [78, 90, 88],
        ('Marks', 'History'): [82, 75, 95]}

df = pd.DataFrame(data)
print(df)

输出:

   Name Marks            
         Maths Science History
0  John    85      78      82
1  Mike    68      90      75
2 Sarah    92      88      95
melted_df = df.melt(col_level=0)
print(melted_df)

输出:

  variable   value
0    Name    John  
1    Name    Mike  
2    Name    Sarah 
3    Maths   85    
4    Maths   68    
5    Maths   92    
6    Science 78    
7    Science 90    
8    Science 88    
9    History 82    
10   History 75    
11   History 95    
结论

DataFrame.melt()函数提供了一个方便且灵活的方法来处理数据框中的转置和重塑操作。无论是从宽格式到长格式的转换,还是解除数据集中的特定列,该函数都能满足你的需求。