You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对目标DataFrame执行Unpivot操作并忽略NaN值?

问题描述

现有如下结构的DataFrame:

PRODUCTNUMBERJerarquía principalJerarquía secundaria marcasCOTEcommercedabra-catalogDexter-ecommerceStockcenter-ecommerce
AD802309Medias-HombreADIDAS950699NaNNaNNaNNaN
AD481076NaNAdidas950699NaNNaNNaNNaN
AD481137Medias-HombreAdidas950699Medias-HombreMedias-HombreMedias-HombreMedias-Hombre

需要转换为以下结构的输出DataFrame(忽略所有NaN值):

PRODUCTNUMBERPRODUCTCATEGORYNAMEPRODUCTCATEGORYHIERARCHYNAME
AD802309Medias-HombreJerarquía principal
AD802309ADIDASJerarquía secundaria marcas
AD802309950699COT
AD481076AdidasJerarquía secundaria marcas
AD481076950699COT
AD481137Medias-HombreJerarquía principal
AD481137AdidasJerarquía secundaria marcas
AD481137950699COT
AD481137Medias-HombreEcommerce
AD481137Medias-Hombredabra-catalog
AD481137Medias-HombreDexter-ecommerce
AD481137Medias-HombreStockcenter-ecommerce

是否可以实现该转换?

解决方案

完全可以实现,用Pandas的melt函数就能快速完成这种宽表转长表的操作,同时过滤掉NaN值。具体步骤如下:

  1. 使用melt函数,指定id_vars为PRODUCTNUMBER(保留作为标识的列),将其他列转换为两列:PRODUCTCATEGORYHIERARCHYNAME(原列名)和PRODUCTCATEGORYNAME(原列对应的值)。
  2. 过滤掉PRODUCTCATEGORYNAME为NaN的行。
  3. 重置索引(可选,让结果更整洁)。

示例代码:

import pandas as pd

# 构造示例输入DataFrame
df = pd.DataFrame({
    "PRODUCTNUMBER": ["AD802309", "AD481076", "AD481137"],
    "Jerarquía principal": ["Medias-Hombre", pd.NA, "Medias-Hombre"],
    "Jerarquía secundaria marcas": ["ADIDAS", "Adidas", "Adidas"],
    "COT": [950699, 950699, 950699],
    "Ecommerce": [pd.NA, pd.NA, "Medias-Hombre"],
    "dabra-catalog": [pd.NA, pd.NA, "Medias-Hombre"],
    "Dexter-ecommerce": [pd.NA, pd.NA, "Medias-Hombre"],
    "Stockcenter-ecommerce": [pd.NA, pd.NA, "Medias-Hombre"]
})

# 执行转换
result_df = df.melt(
    id_vars="PRODUCTNUMBER",
    var_name="PRODUCTCATEGORYHIERARCHYNAME",
    value_name="PRODUCTCATEGORYNAME"
).dropna(subset=["PRODUCTCATEGORYNAME"]).reset_index(drop=True)

print(result_df)

执行上述代码后,得到的结果就和目标结构完全一致,且自动忽略了所有NaN值。

内容的提问来源于stack exchange,提问作者Maximiliano Vazquez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:40:43