Pandas中筛选name含Al的行并替换sport列large为L的实现方法
完整实现代码
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'name': ['Bob', 'Jane', 'Alice'], 'sport': ['tennis small', 'football medium', 'basketball large'] }) # 核心操作:筛选name含Al的行,替换对应sport列的large为L df.loc[df['name'].str.contains('Al'), 'sport'] = df.loc[df['name'].str.contains('Al'), 'sport'].str.replace('large', 'L') # 打印验证结果 print(df)
输出结果
name sport 0 Bob tennis small 1 Jane football medium 2 Alice basketball L
逻辑拆解
df['name'].str.contains('Al')生成布尔序列,匹配所有name列包含Al子串的行- 通过
loc定位到匹配行的sport列,调用str.replace完成子串替换后赋值回原列,仅修改匹配行的对应数值
补充说明
如果需要保留原始DataFrame不被修改,可先复制副本再操作:
df_new = df.copy() df_new.loc[df_new['name'].str.contains('Al'), 'sport'] = df_new.loc[df_new['name'].str.contains('Al'), 'sport'].str.replace('large', 'L')
如果需要不区分大小写匹配al/AL等写法,可在contains方法中添加case=False参数:
df.loc[df['name'].str.contains('Al', case=False), 'sport']
内容的提问来源于stack exchange,提问作者nilsinelabore
相关产品推荐
相关产品推荐

