如何将多列虚拟变量转换为字符串列?Pandas实现方案
多分类虚拟变量转单列拼接格式的实现方法
先构造示例数据集:
import pandas as pd df = pd.DataFrame({ 'a_1': [1, 0, 0, 1], 'a_2': [1, 1, 1, 0], 'a_3': [0, 0, 1, 0] })
核心实现代码一行搞定:遍历每行,筛选出值为1的列,提取列名里的数字后缀,再用|拼接成字符串:
df['a'] = df.apply(lambda row: '|'.join([col.split('_')[1] for col, val in row.items() if val == 1]), axis=1) # 只保留目标列的话 result = df[['a']]
运行后得到的结果完全符合需求:
a 0 1|2 1 2 2 2|3 3 1
如果后续要转回虚拟变量格式,用str.get_dummies就能快速还原:
dummy_df = result['a'].str.get_dummies(sep='|').add_prefix('a_')
内容的提问来源于stack exchange,提问作者Iggy Comdore
相关产品推荐
相关产品推荐

