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

如何按规则修改pandas dataframe中指定行的特定值?

实现代码

你可以通过逐列判断规则后给name1行赋值的方式实现需求,下面提供两种常用写法:

1. 循环写法(逻辑直观,易理解)

import pandas as pd

# 原有df构造
d = {'col1':['b',''], 'col2':['','a'], 'col3':['','']}
index = ['name1','name2']
df = pd.DataFrame(index=index, data=d)

# 核心替换逻辑
for col in df.columns:
    val_name1 = df.loc['name1', col]
    val_name2 = df.loc['name2', col]
    # 按优先级匹配规则
    if val_name1.strip().islower():
        df.loc['name1', col] = 'green'
    elif val_name2.strip().islower():
        df.loc['name1', col] = 'red'
    else:
        df.loc['name1', col] = 'yellow'

2. 向量化写法(效率更高,适合大表场景)

需要先导入numpy依赖:

import numpy as np

# 按规则生成判断条件
cond_green = df.loc['name1'].str.contains(r'[a-z]', na=False)
cond_red = df.loc['name2'].str.contains(r'[a-z]', na=False)

# 给name1行批量赋值
df.loc['name1'] = np.select([cond_green, cond_red], ['green', 'red'], default='yellow')

效果验证

运行后输出df即可得到你需要的结果:

col1   col2    col3
name1  green    red  yellow
name2                  a   

你原来用的replace方法只能做全局的单模式匹配,不支持跨行的条件判断,因此不适用当前场景。


内容的提问来源于stack exchange,提问作者Rocco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:07