如何在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)
简单说明
str.endswith(('.', '?', '!'), na=False):精准匹配末尾的三种标点,na=False用来避免空值引发的异常str[:-1]直接截取除最后一个字符外的内容,快速去掉末尾标点pd.concat将原数据和新行合并,ignore_index=True重新生成连续索引,避免索引混乱
内容的提问来源于stack exchange,提问作者Gooby
相关产品推荐
相关产品推荐

