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

如何在Pandas中捕获特定行上下值并生成新列?

问题

我有一个仅含单列的DataFrame:

data={'Name':['10000','Votes','12','10100', 'Votes', '13']}
df=pd.DataFrame(data)

需要基于“Votes”行生成两个新列:

  • 第一列:仅在“Votes”所在行填入该行上方的政党编号
  • 第二列:仅在“Votes”所在行填入该行下方的得票数值
已实现的解决方案

我自己写出了可行代码(修正了列名和匹配文本的笔误,确保和原DataFrame对应):

import numpy as np
import pandas as pd

data={'Name':['10000','Votes','12','10100', 'Votes', '13']}
df=pd.DataFrame(data)

# 提取Votes行上方的政党编号
df['num_candidato'] = np.where(df['Name']=='Votes', df['Name'].shift(1), np.nan)
# 提取Votes行下方的得票数值
df['votos'] = np.where(df['Name']=='Votes', df['Name'].shift(-1), np.nan)

代码解释

  • shift(1):获取当前行的上一行数据,用来提取“Votes”行上方的政党编号
  • shift(-1):获取当前行的下一行数据,用来提取“Votes”行下方的得票数
  • np.where():做条件判断,只有当该行是“Votes”时才填充对应值,其他行留空(NaN)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:40:23