pandas備忘録(縦横変換)
dataframeの縦横変換をしてみます。
縦変換
こんなデータを縦変換します。
縦変換にはmelt関数を使います。
id_vars:残したい変数
value_vars:変換対象の変数
var_name:変換後の変数名が格納される変数の名前
value_name:変換後の値が入る変数名
labtest.melt(id_vars=["subjid","visit","visitnum","lbdat"],
value_vars=["WBC","RBC","HGB","CHOL","GLU","ALT","AST"],
var_name="lbtestcd",
value_name="lborres")
subjidとvisitnumで並べ替えしておきます。
lb_long = lb_long.sort_values(["subjid","visitnum","lbtestcd"])
横変換
次はこれを横に戻してみます。pivotを使います。
lb_wide=lb_long.pivot(index=["subjid","visit","visitnum","lbdat"],
columns="lbtestcd",
values="lborres")
lb_wide.reindex(["WBC","RBC","HGB","CHOL","GLU","ALT","AST"],level=1,axis="columns")
カラム名がアルファベット順になるので、reindexで並び替えました。