如何将DataFrame中'amount'右侧值移至新列并删除对应行?
最优实现方法
思路
观察数据规律:'amount'行始终紧跟在需要填充Column3的目标行之后,因此可以利用位移函数提取'amount'行的Column2值,再过滤掉'amount'行即可。
代码实现
首先构造示例DataFrame(模拟你的数据):
import pandas as pd # 模拟原始数据 df = pd.DataFrame({ 'Column1': ["'a'", "'amount'", "'e'", "'amount'"], 'Column2': ["'b'", "'$d'", "'f'", "'$g'"] })
核心处理步骤:
# 1. 将下一行的Column2值移到当前行作为Column3 df['Column3'] = df['Column2'].shift(-1) # 2. 过滤掉包含'amount'的行,重置索引 df = df[df['Column1'] != "'amount'"].reset_index(drop=True)
如果你的实际数据中字符串不带单引号(比如Column1的值是amount而非'amount'),只需修改过滤条件:
df = df[df['Column1'] != 'amount'].reset_index(drop=True)
结果验证
运行后得到的DataFrame如下:
Column1 Column2 Column3 0 'a' 'b' '$d' 1 'e' 'f' '$g'
为什么这是最优解?
- 时间复杂度为O(n),仅需两次遍历(位移+过滤),效率极高;
- 代码简洁直观,无需复杂的循环或分组操作;
- 利用pandas内置的向量化操作,避免了逐行处理的性能损耗。
内容的提问来源于stack exchange,提问作者user19891327
相关产品推荐
相关产品推荐

