繁体   English   中英

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

[英]Applying a function to only part of a Pandas Dataframe columns

我有一个如下所示的Dataframe:

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

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

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

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

提前致谢

您可以重写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)
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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM