仅将功能应用于Pandas Dataframe列的一部分

时间:2016-11-24 10:57:58

标签: python pandas

我有一个如下所示的Dataframe:

$builder->add('adult', AdultType::class, array(
                        'additionalName' => $options['name']
                    ));

和一个简单的功能:

Date        Last
2016-11-03  101.58  
2016-11-04  100.50  
2016-11-07  103.55  
2016-11-08  104.63  
2016-11-09  106.15  
2016-11-10  107.65  
2016-11-11  106.74  
2016-11-14  108.22  
2016-11-15  107.92  
2016-11-16  106.03  

我想使用该函数向数据框添加另一列,但我只想将它应用于'2016-11-09'之前的日期。我试过这样做:

def new_def(x):
    add=70.00
    return x[0]+add

结果列在“2016-11-09”之前是正确的,之后是NaN。关于如何在'2016-11-09'和'x [0]'之后返回'x [0] + add'的任何建议?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以重写new_def函数以获取日期参数:

def new_def(val, date):
    return val+70.0 if date < pd.datetime(2016, 11, 9) else val

然后像这样应用:

df.apply(lambda r: newdef(r['Last'], r.name), 1)

答案 1 :(得分:0)

df["test"]=df.apply(lambda r: r["Last"]+70.0 if pd.datetime.strptime(r.name, "%Y-%m-%d") < pd.datetime(2016, 11, 9) else r["Last"], 1)