在Pandas中,可以使用melt()
函数将DataFrame中的多个列值转置为一列。melt()
函数的基本语法如下:
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
参数说明:
frame
:要转置的DataFrame。id_vars
:需要保留的列名或列索引,不进行转置的列。value_vars
:需要转置的列名或列索引,将这些列的值转置为一列。var_name
:转置后的列名,默认为variable
。value_name
:转置后的值的列名,默认为value
。col_level
:如果列是多级索引的,则使用该参数指定要转置的级别。下面是一个示例,演示如何根据Pandas DataFrame中的两个索引将多个列值转置为一列:
import pandas as pd
# 创建示例DataFrame
data = {'ID': [1, 2, 3],
'Name': ['Alice', 'Bob', 'Charlie'],
'Maths': [90, 85, 95],
'Physics': [80, 75, 85],
'Chemistry': [95, 90, 85]}
df = pd.DataFrame(data)
# 将Maths、Physics和Chemistry列转置为一列
df_transposed = pd.melt(df, id_vars=['ID', 'Name'], value_vars=['Maths', 'Physics', 'Chemistry'], var_name='Subject', value_name='Score')
print(df_transposed)
输出结果如下:
ID Name Subject Score
0 1 Alice Maths 90
1 2 Bob Maths 85
2 3 Charlie Maths 95
3 1 Alice Physics 80
4 2 Bob Physics 75
5 3 Charlie Physics 85
6 1 Alice Chemistry 95
7 2 Bob Chemistry 90
8 3 Charlie Chemistry 85
在这个例子中,我们将DataFrame中的Maths
、Physics
和Chemistry
列转置为了一列,并命名为Subject
和Score
。转置后的DataFrame包含了原始DataFrame中的ID
、Name
和转置后的列。
领取专属 10元无门槛券
手把手带您无忧上云