如何根据pandas DataFrame另一列值删除字符串列末尾可变数量字符
实现方案
你可以通过按行遍历DataFrame的方式实现逐行匹配删除数量,以下是两种常用实现方式:
- 第一种是易读性最高的
apply按行处理方案,适合中小数据量场景:
df['processed_text'] = df.apply(lambda row: str(row['text'])[:-row['number of characters to remove']], axis=1)
参数axis=1指定按行遍历,lambda函数里可以直接取同一行的text列和删除数量列做字符串切片。
- 第二种是高性能向量化运算方案,适合十万行以上的大数据量场景,运算效率远高于逐行apply:
import numpy as np df['processed_text'] = df['text'].str.slice(stop=-np.array(df['number of characters to remove']))
直接调用pandas原生字符串方法str.slice,传入对应每行停止位置的numpy数组即可完成批量切片。
额外注意:如果存在删除字符数大于文本本身长度的情况,直接切片会返回空字符串,可以加边界判断避免异常,示例如下:
df['processed_text'] = df.apply( lambda row: str(row['text'])[:max(-row['number of characters to remove'], 0)], axis=1 )
当删除数量超过文本长度时会直接返回原文本。
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

