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

Python DataFrame操作:如何移除值内空格及末尾.0后缀

问题解决方法

你之前的代码不生效是因为两个核心问题:一是replace('', "")是替换空字符串,无法匹配数据里的空格;二是只处理了后缀.0,没有覆盖空格场景。直接在DataFrame层面做批量清洗效率更高,具体实现如下:

第一步:定义通用清洗函数,统一处理异常格式

import pandas as pd
import numpy as np

# 函数作用:去除所有空格、删除末尾.0后缀、空值转NaN
def clean_code(x):
    # 先转字符串,移除所有半角、全角空格(包括首尾、中间位置的空格)
    s = str(x).replace(" ", "").replace(" ", "")
    # 匹配末尾.0后缀并删除
    if s.endswith(".0"):
        s = s[:-2]
    # 清洗后为空的内容返回NaN,方便后续删空
    return s if s != "" else np.nan

第二步:批量清洗目标列

# 清洗持仓表的合约编码列
df_position["SecurityReference"] = df_position["SecurityReference"].apply(clean_code)
# 清洗现金交易表的合约编码列
df_tradeCash["MurexSecurityReference"] = df_tradeCash["MurexSecurityReference"].apply(clean_code)

第三步:执行去空、去重逻辑,获取最终列表

# 删空、去重逻辑和你原有逻辑一致
df_position.dropna(subset=["SecurityReference"], inplace=True)
df_position.drop_duplicates(subset=["SecurityReference"], inplace=True)

df_tradeCash.dropna(subset=["MurexSecurityReference"], inplace=True)
df_tradeCash.drop_duplicates(subset=["MurexSecurityReference"], inplace=True)

# 直接获取清洗完成的列表,不需要二次处理
tradePositionList = df_position["SecurityReference"].tolist()
tradeCashList = df_tradeCash["MurexSecurityReference"].tolist()
securitylist = tradePositionList + tradeCashList

原代码问题说明

  • 你用replace('', "")只能替换完全为空的字符串,对G Z1、L M4这类带空格的内容没有处理效果
  • 列表推导式处理几万条数据的效率远低于pandas的apply批量处理,优先在DataFrame层面做清洗更适合大量数据场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:04