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

Pandas拼接文本列时如何自动为缺失句号的内容补全句点

Pandas拼接文本列时自动补全缺失句点

使用Pandas拼接DataFrame两列文本时,需要仅对末尾缺失句号的文本自动补全句点,避免出现重复标点、空值拼接出多余符号的问题,直接硬拼接句号的写法无法得到符合预期的结果。

测试复现代码

# 导入依赖库
import pandas as pd
import numpy as np
 
# 构造测试数据
data = [['text with a period.', '111A.'], 
        ['text without a period', '222B'], 
        ['text with many periods...', '333C'],
        [np.NaN, '333C'],
        [np.NaN, np.NaN]]
 
# 生成测试DataFrame
df = pd.DataFrame(data, columns=['text1', 'text2'])

# 原有错误拼接写法
combined_df=df.copy()
combined_df["combined_text"]=df["text1"].fillna("") + ". " + df["text2"].fillna("") + '.'
combined_df

预期效果

各行拼接后的combined_text列结果如下:

  • 两列自带句号的行:text with a period. 111A.
  • 两列都无句号的行:text without a period. 222B.
  • 第一列多句号结尾、第二列无句号的行:text with many periods... 333C.
  • 第一列为空、第二列无句号的行:333C.
  • 两列全空的行:空字符串

原有写法的问题是不管文本末尾有没有句号都强行加标点,会出现重复点号,空值位置会生成多余的孤立句号、冗余空格。

解决方案

先实现单段文本的句号补全逻辑:非空文本末尾无句号则补全,空值统一返回空串;两列分别处理完后再拼接,自动清理首尾多余空格、重复末尾点号即可。

def add_period_if_missing(content):
    content = str(content).strip()
    # 空值/空字符串直接返回空
    if content in ("", "nan", "None"):
        return ""
    # 末尾无句号则补全,有句号(含多句号结尾)直接返回
    return content if content.endswith(".") else content + "."

combined_df = df.copy()
# 分别处理两列的句号
processed_t1 = df["text1"].apply(add_period_if_missing)
processed_t2 = df["text2"].apply(add_period_if_missing)
# 拼接后清理冗余空格、统一修正末尾重复点号
combined_df["combined_text"] = (processed_t1 + " " + processed_t2).str.strip().str.replace(r"\.+$", ".", regex=True)

运行后结果完全匹配预期:

  • 自带末尾句号(含多句号结尾)的文本不会重复添加标点
  • 缺失句号的文本自动补全末尾句点
  • 单列/双列为空值的行不会生成多余空格、孤立句号
  • 两列拼接处的分隔符自然,无连续点号问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:39:15