使用Python对全数据集进行透视,将指定列转为分类取值的实现咨询
解决方案
你需要实现的是宽表转长表的逆透视操作,和你参考的pivot(长表转宽表)功能正好相反,用pandas的pd.melt()方法即可实现:
import pandas as pd # 逆透视转换 result = pd.melt( df, # 不需要转换、原样保留的列 id_vars = ["id", "date", "ppp", "base", "final", "final2"], # 需要展开为type分类的原列名 value_vars = ["sun", "moon", "stars"], # 生成的分类列的列名 var_name = "type", # 存储原sun/moon/stars对应取值的列名,不需要可后续删除 value_name = "val" ) # 删掉不需要的val列,调整列顺序和你预期完全一致 result = result.drop(columns=["val"])[["id", "date", "type", "ppp", "base", "final", "final2"]]
如果你后续需要从转换后的长表转回原始宽表,才需要用到pivot方法,示例如下:
# 长表转宽表还原原始数据 ori_df = result.pivot( index = ["id", "date", "ppp", "base", "final", "final2"], columns = "type", values = "val" ).reset_index()
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

