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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:22:50