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

如何替换Pandas DataFrame中含<的数值为0?

解决Pandas DataFrame中含“<”的数值替换为0的问题

这里提供几种简单易懂的方法,适合Python新手实现需求:

方法1:使用replace配合正则表达式(推荐)

这是最简洁的方式,直接利用replace的正则匹配功能,一次性替换所有含<的内容:

import pandas as pd

# 先创建示例DataFrame(你可以替换成自己的DataFrame)
df = pd.DataFrame({
    'A': ['<0.5', 10, '<100', 200],
    'B': [5, '<10', 15, '<0.1']
})

# 替换所有以"<"开头的字符串为0
df = df.replace(r'^<.*', 0, regex=True)
  • r'^<.*'是正则表达式,匹配以<开头的任意字符串;
  • regex=True参数告诉Pandas启用正则匹配模式。

方法2:使用applymap逐个判断

如果你想更直观地理解替换逻辑,可以用applymap遍历每个单元格,手动判断替换:

# 遍历每个单元格,含"<"则替换为0
df = df.applymap(lambda x: 0 if isinstance(x, str) and '<' in x else x)
  • applymap会对DataFrame的每个单元格执行lambda函数;
  • 先判断元素是否为字符串且包含<,满足条件就返回0,否则保留原内容。

方法3:针对字符串列的mask方法

如果你的DataFrame里只有部分列是字符串类型,可以用mask精准处理:

# 遍历所有列,只处理字符串类型的列
for col in df.columns:
    if df[col].dtype == object:  # 判断列是否为字符串类型
        df[col] = df[col].mask(df[col].str.contains('<', na=False), 0)
  • str.contains('<')检查单元格是否包含<;
  • mask会把满足条件的单元格替换为指定值(这里是0)。

额外步骤:转换为数值类型

替换完成后,若需要把列转为数值类型(方便后续计算),可以执行:

df = df.astype(float)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:57:44