首页 > 解决方案 > 从同一数据框中选择不同年份的值

问题描述

我有一些特征和相应年份的数据框。该特征的每个值都针对不同的年份列出。我需要将特定年份的值与 7 年前的值进行比较。所以基本上我需要定义一个函数,它将生成两列,一列将给出表中特定年份的特征值,另一列给出相同特征但 7 年前的值。我怎样才能做到这一点?

feature    year
value1     2001
value1     2008  
vlaue2     1996 

ETC

例如,我想value1(2008)value1(2008 - 7)等进行比较。还应该有一些条件语句,因为 2000 年不能与 (2000-7 =1993) 进行比较,因为例如 (1993) 年的功能没有价值。

标签: pythonpandas

解决方案


这是我从您的问题中了解到的快速解决方案,

import numpy as np
import pandas as pd

data = {'feature': ['A', 'B', 'C', 'A'],
        'value': [1, 10, 3, 50],
        'year':[2001, 2002, 2003, 2008]}

df = pd.DataFrame(data)

def compFeature(df, f, y):
    if df[(df.feature == f) & (df.year == (y-7))].year is not None:
        now = df[(df.feature == f) & (df.year == y)].value
        old = df[(df.feature == f) & (df.year == (y-7))].value
        result = np.subtract(now,old)
    else:
        result = np.nan

    return result

这只是为了让你开始。


推荐阅读