Python数据分析|pandas.melt()函数的一些用法

melt()函数是一个数据重塑工具,用于将宽格式数据转换为长格式数据(Unpivot a DataFrame from wide to long format, optionally leaving identifiers set.)
简单来说就是将一个数据中很多列需要重塑的变量转换为两列,一列为变量的名字,一列为对应变量的取值。

1. 基本语法

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)

  • frame : 需要重塑的Dataframe
  • id_vars : 保留不变的列,即不进行重塑的列(Column(s) to use as identifier variables)
  • value_vars : 要进行重塑的列,若没有为该变量赋值则默认为所有未包含在id_vars中的列(Column(s) to unpivot. If not specified, uses all columns that are not set as id_vars.)
  • var_name : 新列中变量名一列的列名(Name to use for the ‘variable’ column. If None it uses frame.columns.name or ‘variable’.)
  • value_name : 新列中变量值一列的列名(Name to use for the ‘value’ column.)
  • col_level : If columns are a MultiIndex then use this level to melt.
  • ignore_index : If True, original index is ignored. If False, the original index is retained. Index labels will be repeated as necessary.

2. 示例

创建一个简单的DataFrame

X1 = pd.DataFrame(
      dict(
            Person=["Bob", "Alice", "Steve"],
            Age=[32, 24, 64],
            Weight=[128, 86, 95],
            Height=[180, 175, 165],
      )
  )
 PersonAgeWeightHeight
0Bob32128180
1Alice2486175
2Steve6495165

1) 利用id_vars保留列

当只有id_vars被赋值时,未出现在id_vars中的列均会被重塑

X1.melt(id_vars=["Person"])
 Personvariablevalue
0BobAge32
1AliceAge24
2SteveAge64
3BobWeight128
4AliceWeight86
5SteveWeight95
6BobHeight180
7AliceHeight175
8SteveHeight165

2) 利用value_vars选择要重塑的列

id_varsvalue_vars均被赋值时,未出现在这两个参数中的列不会在新生成的DataFrame中出现

X1.melt(id_vars=["Person"], value_vars=["Weight", "Height"], var_name="Type", value_name="value")
 PersonTypevalue
0BobWeight128
1AliceWeight86
2SteveWeight95
3BobHeight180
4AliceHeight175
5SteveHeight165

cf : TP01 Q7, TP02 Q17

posted @   树娃娃  阅读(735)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示