You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中查找指定值位置并处理空格模糊匹配

Pandas 单元格匹配与更新问题解决方案

1. 提取匹配结果的行索引与列名

通过df[df.isin(['Apple'])].stack()得到的结果是带双层MultiIndex的Series:

  • 第一层索引:对应原DataFrame的行索引
  • 第二层索引:对应匹配单元格的列名
  • Series的值:对应单元格的原始内容

单个匹配结果取值

# 取行索引,示例中对应数值6
row_index = x.index[0][0]
# 取列名,示例中对应'Fruit Name'
col_name = x.index[0][1]
# 取单元格原值,示例中对应'Apple'
value = x.iloc[0]

多匹配结果批量操作

for (row_idx, col_name), old_val in x.items():
    # 直接更新原DataFrame对应位置
    df.loc[row_idx, col_name] = 'Green Apple'

2. 模糊匹配带前后空格的目标值

Pandas没有内置islike语法,可通过字符串操作+正则实现模糊匹配,两种常用场景如下:

场景1:仅忽略前后空格做精准匹配

仅过滤前后空白,匹配内容完全等于Apple的单元格:

# 自动跳过非字符串类型的单元格
mask = df.applymap(lambda val: isinstance(val, str) and val.strip() == 'Apple')
match_result = df[mask].stack()

场景2:全模糊匹配(包含Apple就算命中)

匹配所有含Apple的内容(例如 Red Apple 、Apple123等):

# na=False表示空值不参与匹配,可添加case=False参数忽略大小写
mask = df.apply(lambda col: col.astype(str).str.contains('Apple', na=False), axis=0)
match_result = df[mask].stack()

批量替换简化方案

如果不需要单独提取匹配位置,仅需要全局更新符合条件的内容,可以直接用replace方法一步完成,无需提前定位:

# 正则匹配前后带任意空格的Apple,全局替换为Green Apple
df = df.replace(r'^\s*Apple\s*$', 'Green Apple', regex=True)

内容的提问来源于stack exchange,提问作者Nguyễn Huỳnh Tấn Phát

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:15:07