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

如何在Pandas中根据字符串末尾标点复制并处理数据行?

Pandas 批量处理:复制带末尾标点的行并去除标点

先看原始数据和要实现的效果:

原始DataFrame:

msg | label
"hello" | 1
"hi!"   | 0

我们需要把所有msg列末尾为?、.、!的行复制一份,复制出的行去掉末尾标点,最终得到如下结果:

处理后DataFrame:

msg | label
"hello" | 1
"hi!"   | 0
"hi"    | 0

具体实现代码

直接用这段代码就能完成需求:

import pandas as pd

# 构造原始DataFrame(如果是从文件读取,替换成pd.read_csv/pd.read_excel等即可)
df = pd.DataFrame({
    'msg': ['hello', 'hi!'],
    'label': [1, 0]
})

# 筛选出msg末尾为?/.!/的行
target_rows = df[df['msg'].str.endswith(('.', '?', '!'), na=False)]

# 复制筛选出的行,同时去掉msg列末尾的标点
new_rows = target_rows.copy()
new_rows['msg'] = new_rows['msg'].str[:-1]

# 合并原数据和新生成的行,重置索引避免重复
final_df = pd.concat([df, new_rows], ignore_index=True)

print(final_df)

简单说明

  1. str.endswith(('.', '?', '!'), na=False):精准匹配末尾的三种标点,na=False用来避免空值引发的异常
  2. str[:-1]直接截取除最后一个字符外的内容,快速去掉末尾标点
  3. pd.concat将原数据和新行合并,ignore_index=True重新生成连续索引,避免索引混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:25