如何在Pandas DataFrame中将指定词移至句末?
问题解决:将指定关键词移至字符串末尾并应用到DataFrame
需求说明
原始数据集:
| Column A |
|---|
| pt abcdefg |
| cv fghikl |
| abcdg pt |
| opqrs cv |
| bp ststst |
| qwert bp |
需要将字符串中的pt、cv、bp移至句末,预期输出:
| Column A |
|---|
| abcdefg pt |
| fghikl cv |
| abcdg pt |
| opqrs cv |
| ststst bp |
| qwert bp |
代码完善与实现
你找到的代码片段仅能处理单个关键词的位置调整,我们可以修改函数逻辑,让它自动识别目标关键词并移至末尾,再通过pandas的apply方法批量应用到整个DataFrame列:
步骤1:调整核心函数
def move_target_to_end(s, target_words): words = s.split() # 遍历目标关键词,存在则移至末尾 for word in target_words: if word in words: words.remove(word) words.append(word) return ' '.join(words)
步骤2:批量应用到DataFrame
假设你的DataFrame名为df,目标列是Column A,执行以下代码:
import pandas as pd # 构造示例DataFrame(已有数据集可跳过此步) data = {'Column A': ['pt abcdefg', 'cv fghikl', 'abcdg pt', 'opqrs cv', 'bp ststst', 'qwert bp']} df = pd.DataFrame(data) # 定义需要移动的关键词集合 targets = ['pt', 'cv', 'bp'] # 对目标列逐行应用函数 df['Column A'] = df['Column A'].apply(lambda x: move_target_to_end(x, targets)) # 查看处理结果 print(df)
代码说明
- 优化后的
move_target_to_end函数支持批量处理多个关键词,拆分字符串后,将目标关键词移至单词列表末尾; - 借助
apply方法,无需循环遍历DataFrame的每一行,自动完成整列数据的调整。
内容的提问来源于stack exchange,提问作者rainy days.
相关产品推荐
相关产品推荐

