2016-11-24 50 views
2

我有一個數據幀,看起來像這樣的部分:應用的功能,只大熊貓數據框列

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 

和一個簡單的函數:

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

我想另一列添加到dataframe使用函數,但我只想將它應用於'2016-11-09'之前的日期。我試着這樣做:

df['New']= df[:'2016-11-09'].apply(new_def, axis=1) 

結果列是正確的達人「2016年11月9日」大和NaN之後。之後如何在'2016-11-09'和'x [0]'之前返回'x [0] +添加'的任何建議?

在此先感謝

+1

是您的日期一列或它是索引,它看起來像索引 – EdChum

+0

對不起,我應該更清楚,是的日期是索引 – dsugasa

回答

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) 
+0

謝謝,如果日期是索引將工作? – dsugasa

+0

是的,它會。我編輯了上面的例子來從索引中提取日期,而不是列。 – jboy

+0

謝謝你,讓我發瘋 – dsugasa

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)