📅  最后修改于: 2023-12-03 15:19:21.126000             🧑  作者: Mango
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
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
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
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()
函数提供了一个方便且灵活的方法来处理数据框中的转置和重塑操作。无论是从宽格式到长格式的转换,还是解除数据集中的特定列,该函数都能满足你的需求。