【问题标题】:Roll up one hot encoded columns into their various columns based on column names根据列名将一个热编码列汇总到它们的各个列中
【发布时间】:2025-12-02 11:05:02
【问题描述】:

我有一个已经过单热编码的数据帧。热编码列的列名,以主列名加 _ 开头,然后是该列的特定类。例如,如果一列是性别,并且该列中的值为男性和女性,那么热编码的列是性别_男性,性别_女性。所以现在我想把它回滚到主列,在那里我会有性别,每一行取决于男性或女性。可以在图片中看到一个示例enter image description here

【问题讨论】:

  • 您好,欢迎您。如果您可以查看how-to-ask,然后尝试生成mcve,那就太好了。

标签: python pandas


【解决方案1】:

一个想法被最后一个_拆分为MultiIndex,然后在MultiIndex的第一级使用DataFrame.dot

df.columns = df.columns.str.rsplit('_', n=1, expand=True)

def f(x):
    y = x.droplevel(0, axis=1)
    return y.dot(y.columns)

df = df.groupby(level=0, axis=1).apply(f)

【讨论】:

    最近更新 更多