Pandas处理列值:将含逗号多值转为7、缺失值转为6
解决Pandas DataFrame多值条目替换问题
问题分析
你需要将specialty列中带逗号的多值条目替换为7,将字符串"missing"替换为6,之前尝试直接给str.contains()结果赋值导致语法错误,这是因为不能直接对函数调用结果赋值,需要通过定位DataFrame的行和列来修改。
解决方案
下面两种方法都可以实现需求:
方法1:使用np.where条件替换
先导入依赖库,然后通过条件判断批量替换:
import pandas as pd import numpy as np # 假设你的DataFrame为df # 替换带逗号的条目为7 df['specialty'] = np.where(df['specialty'].str.contains(',', na=False), 7, df['specialty']) # 替换"missing"为6 df['specialty'] = df['specialty'].replace({'missing': 6})
str.contains(',', na=False):检查每个元素是否包含逗号,na=False避免空值引发异常np.where:满足条件(含逗号)时替换为7,否则保留原数值
方法2:使用df.loc定位修改
通过布尔索引定位目标行,直接赋值修改:
import pandas as pd # 假设你的DataFrame为df # 定位含逗号的行,替换为7 df.loc[df['specialty'].str.contains(','), 'specialty'] = 7 # 替换"missing"为6 df['specialty'] = df['specialty'].replace({'missing': 6})
df.loc[布尔条件, 列名]:是Pandas中定位行和列并赋值的标准写法,避免了之前的语法错误
验证结果
执行上述代码后,specialty列会变为你期望的输出:
specialty 0 1 1 7 2 2 3 6 4 6 5 1 6 3 7 7 8 4 9 1
内容的提问来源于stack exchange,提问作者hulio_entredas
相关产品推荐
相关产品推荐

