在 Pandas 中,我们可以使用 melt
函数来实现列名转换成行名/索引。
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
:要转换的列名列表或元组。如果未指定,那么所有未在id_vars
中的列都将被转换。var_name
:新生成的 DataFrame 中,由原来的 “宽格式” 转换成 “长格式” 后,新列的列名。value_name
:指定 “宽格式” 中的值列名字和输出 “长格式” 后的列名字。col_level
:如果输入的 DataFrame 的列名是多层索引(MultiIndex),那么使用col_level
参数指定要转换的列的层级。
以下是一个实例:
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [1, 2, 3],
'C': [4, 5, 6]
})
# 使用 melt 函数将列名转换为行名
new_df = pd.melt(df, id_vars=['A'], value_vars=['B', 'C'], var_name='my_varname', value_name='my_valname')
# 输出结果
print(new_df)
输出结果:
A my_varname my_valname
0 a B 1
1 b B 2
2 c B 3
3 a C 4
4 b C 5
5 c C 6
在上面的示例中,我们创建了一个名为 df
的 DataFrame,其中包含三列 A, B 和 C,然后使用 melt
函数将列名为 B 和 C 的列行转化为了行名,并将变化后的列名储存于 my_varname
中,所对应的值则储存在 my_valname
中。