如何将Pandas DataFrame的Class列拆分为多列并设置对应列名
解决Pandas DataFrame拆分Class列为多列的问题
需求说明
将DataFrame中的Class列拆分为以其取值(A、B、C、D)命名的新列,对应行的新列填充Class列的取值,其余列留空。
初始DataFrame
ID Name Class 0 12 John A 1 13 Mark A 2 14 Tony B 3 15 Marcus C 4 16 Phill D 5 17 Jack A
期望结果
ID Name Class A B C D 0 12 John A A 1 13 Mark A A 2 14 Tony B B 3 15 Marcus C C 4 16 Phill D D 5 17 Jack A A
实现代码
import pandas as pd # 构造初始数据 df = pd.DataFrame({ 'ID': [12, 13, 14, 15, 16, 17], 'Name': ['John', 'Mark', 'Tony', 'Marcus', 'Phill', 'Jack'], 'Class': ['A', 'A', 'B', 'C', 'D', 'A'] }) # 遍历目标列名,生成对应列 for col_name in ['A', 'B', 'C', 'D']: # 当Class等于列名时保留原值,否则设为空字符串 df[col_name] = df['Class'].where(df['Class'] == col_name, '') # 查看结果 print(df)
代码说明
- 利用
df['Class'].where(条件, 替代值)方法:满足条件时保留Class列的取值,不满足则用空字符串填充对应列。 - 通过循环遍历目标列名,逐个生成新列,逻辑简洁易维护。
内容的提问来源于stack exchange,提问作者showd
相关产品推荐
相关产品推荐

