如何在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
相关产品推荐
相关产品推荐

