如何用Python为数据集新增上一匹配年份、下一匹配年份两个新列
解决方法
我们可以用pandas的分组位移函数shift()实现需求,完整代码如下:
import pandas as pd import numpy as np # 构造示例数据表 df = pd.DataFrame({ 'NAME': ['Foo', 'Foo', 'Foo', 'Bar', 'Bar'], 'YEAR': [2012, 2017, 2022, 2015, 2014], 'COUNT': [0, 1, 2, 0, 2] }) # 按名称分组、按年份升序排序,保证前后年份顺序正确 df = df.sort_values(['NAME', 'YEAR']).reset_index(drop=True) # 计算Prior列:同分组上一个年份,计数为0时设为NaN df['Prior'] = df.groupby('NAME')['YEAR'].shift(1) df.loc[df['COUNT'] == 0, 'Prior'] = np.nan # 计算Next列:同分组下一个年份,无下一个年份时用当前年份+4填充 df['Next'] = df.groupby('NAME')['YEAR'].shift(-1) df['Next'] = df['Next'].fillna(df['YEAR'] + 4) # 可按需修改列名匹配你的输出要求 df.columns = ['Name', 'Year', 'Count', 'Prior', 'Next'] print(df)
运行代码后输出结果与需求逻辑完全匹配,你可以直接替换示例数据为你自己的数据集即可。
内容的提问来源于stack exchange,提问作者jx24
相关产品推荐
相关产品推荐

