我有一个如下所示的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'的任何建议?
提前致谢
答案 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)