Python 将函数仅应用于数据帧列的一部分

Python 将函数仅应用于数据帧列的一部分,python,pandas,Python,Pandas,我有一个如下所示的数据帧: 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 df.apply

我有一个如下所示的数据帧:

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  
df.apply(lambda r: newdef(r['Last'], r.name), 1)
还有一个简单的函数:

def new_def(x):
    add=70.00
    return x[0]+add
我想使用该函数向数据框添加另一列,但我只想将其应用于“2016-11-09”之前的日期。我试着用以下方法来做这件事:

df['New']= df[:'2016-11-09'].apply(new_def, axis=1)
结果列在“2016-11-09”之前是正确的,之后是NaN。对于如何在“2016-11-09”之前返回“x[0]+添加”以及在“2016-11-09”之后返回“x[0]”有何建议


提前感谢

您可以重写
新的_def
函数以获取日期参数:

def new_def(val, date):
    return val+70.0 if date < pd.datetime(2016, 11, 9) else val
df[“test”]=df.apply(lambda r:r[“Last”]+70.0如果pd.datetime.strtime(r.name,“%Y-%m-%d”)
你的日期是列还是索引,看起来是索引?或者我应该更清楚,是的,日期是索引,它会的。我编辑了上面的示例以从索引中提取日期,而不是从列中提取日期。
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)