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

如何创建列存储同名上一行的Value值,无前置值则留空?

问题分析与解决方法

你的代码存在几个关键问题:

  • 嵌套循环逻辑混乱:外层遍历每行,内层又遍历整个Name列表,会导致previous_value长度远大于原DataFrame行数,最终无法合并。
  • 变量名错误:代码里previous_followers.append("")中的previous_followers未定义,应该是previous_value。
  • 匹配逻辑方向错误:你拿当前行的Name和下一行的Name对比,完全搞反了“取同一Name上一行值”的逻辑。

用Pandas内置的分组+位移方法可以高效解决这个需求,不需要手动写循环:

import pandas as pd

# 假设你的原DataFrame是df
df['Previous_value'] = df.groupby('Name')['Value'].shift(1).fillna('')

逻辑解释:

  • groupby('Name'):按姓名分组,确保只在同一人员的行内进行操作。
  • shift(1):将每个分组内的Value列向下位移一行,当前行就能拿到同一人员上一行的Value值;首次出现的行因为没有前置行,会得到NaN。
  • fillna(''):把NaN替换为空字符串,满足“无前置值则留空”的要求。

验证效果:

用你给出的预期数据测试,运行后结果与需求完全匹配:

NameValuePrevious_value
1Andrew12
2Marco10
3Philips9
4Andrew812
5Oscar7
6Peter15
7Maria25
8Marco310
9Andrew78
10Oscar197
11Oscar2119
12Maria225

内容的提问来源于stack exchange,提问作者user20716077

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:15:29