Pandas中melt和pivot函数
melt和pivot函数说明
melt函数和pivot函数通常用来进行数据表行和列转换使用。
这里举一个例子来说明这两个函数可以达到的效果。
原数据
处理后数据
数据准备
data={"date":['20150901','20150901','20150901'],"hour":[12,12,12],"type":['AQI','PM2.5_24h','PM10_24h'],"北京":[24,14,20],"天津":
[25,22,25],"石家庄":[24,20,32],"唐山":[24,9,20]}
import pandas as pd
df = pd.DataFrame(data)
数据处理
根据需求可以观察到需要将“北京”,“天津”,“石家庄”和“唐山”这四列变换为一行,同时保留type列的类容。
- 列变行
df_melt=df.melt(id_vars=['date','hour','type'],var_name='City')
转变后结果:
2. 行变列
df_melt_pivot = df_melt.pivot(index=['date','hour','City'],columns='type',values='value').reset_index()
df_melt_pivot
函数说明
melt
pandas.melt(frame,id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
函数作用
当一列或多列是标识符变量,而其它列被当成测定变量时,可以通过melt函数完成这种转变。
参数说明
id_vars 作为自变量的一列或多列。
value_vars 作为因变量的一列或多列,如果没有定义则将除id_vars列以外的所有列当作因变量列。
var_name 因变量列的名称,如果没有定义则使用几列中第一个列名。
value_name 转换后数值列的列名
col_level 当存在多重列索引时,指定用第几层索引进行转换
ignore_index True时忽略原始索引。否则保存原始索引。
pivot
pandas.pivot(data, index=None, columns=None, values=None)
函数作用
根据列值进行转置。使用指定索引/列中的唯一值形成返回数据框架的轴。该函数不支持数据聚合,多数值将导致多重索引。
参数说明
data 被转变的数据框架。
index 作为索引列,不指定时使用默认索引。
columns 作为返回数据框架的列
values 作为新构成数据框架的值