如何将DataFrame的player_traits列按'Injury Prone'转换为0/1值?
解决方法:将DataFrame的
player_traits列转换为二值标记 根据需求,可通过以下几种方式实现,适配不同的数据格式场景:
场景1:player_traits列是字符串格式(特质用分隔符拼接)
直接使用pandas的字符串方法检测目标特质,再转换为整数:
import pandas as pd # 基础实现(若存在空值会生成NaN) df['player_traits'] = df['player_traits'].str.contains('Injury Prone').astype(int) # 优化:处理空值,将空单元格直接判定为0 df['player_traits'] = df['player_traits'].str.contains('Injury Prone', na=False).astype(int)
说明:str.contains()会返回布尔值(包含则为True,否则为False),astype(int)将True转为1,False转为0;na=False参数把空值直接视为不包含目标特质,避免出现NaN。
场景2:player_traits列是列表格式(每个单元格是特质列表)
如果单元格存储的是Python列表,使用apply结合lambda表达式判断:
df['player_traits'] = df['player_traits'].apply(lambda x: 1 if 'Injury Prone' in x else 0)
说明:lambda函数遍历每个单元格的列表,检查是否包含目标特质,返回对应的1或0。
内容的提问来源于stack exchange,提问作者Tom Bomer
相关产品推荐
相关产品推荐

