Pandas基于列表生成新列,按值存在情况填充1或0
用Pandas实现Codes列的哑变量转换
假设你的数据已经存入DataFrame,以下是具体实现步骤:
- 先构造示例数据(已有数据可跳过此步):
import pandas as pd data = { 'Codes': ['40.1, 54.06, 11.3', '50.64', '48.7, 40.1, 54.06', '35.2, 50.64'] } df = pd.DataFrame(data)
- 拆分Codes列并生成目标格式的哑变量:
# 将逗号分隔的字符串转为列表 df['Codes'] = df['Codes'].str.split(', ') # 展开列表生成临时表,每行对应一个code exploded_df = df.explode('Codes') # 生成哑变量后按原行索引分组求和,同一行的多个code对应位置设为1 dummies = pd.get_dummies(exploded_df['Codes']).groupby(exploded_df.index).sum() # 合并原数据与哑变量表,缺失值填充为0 result = pd.concat([df, dummies], axis=1).fillna(0)
- 最终的
result就是你需要的目标表格,每个唯一code对应一列,该行包含该code则填1,否则填0。
如果已经提前生成了唯一值列表,也可以用循环逐个判断:
# 假设已获取唯一值列表unique_codes unique_codes = ['11.3', '35.2', '40.1', '48.7', '50.64', '54.06'] for code in unique_codes: df[code] = df['Codes'].apply(lambda x: 1 if code in x.split(', ') else 0)
这种方式逻辑更直观,适合数据量不大的场景。
内容的提问来源于stack exchange,提问作者plambertini
相关产品推荐
相关产品推荐

