我有一个如下所示的数据框:
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
Run Code Online (Sandbox Code Playgroud)
和一个简单的函数:
def new_def(x):
add=70.00
return x[0]+add
Run Code Online (Sandbox Code Playgroud)
我想使用该函数向数据框添加另一列,但我只想将其应用于“2016-11-09”之前的日期。我尝试这样做:
df['New']= df[:'2016-11-09'].apply(new_def, axis=1)
Run Code Online (Sandbox Code Playgroud)
生成的列在“2016-11-09”之前都是正确的,之后为 NaN。关于如何在“2016-11-09”之前返回“x[0] + add”以及之后返回“x[0]”有什么建议吗?
提前致谢
您可以重写new_def函数以采用日期参数:
def new_def(val, date):
return val+70.0 if date < pd.datetime(2016, 11, 9) else val
Run Code Online (Sandbox Code Playgroud)
然后像这样应用它:
df.apply(lambda r: newdef(r['Last'], r.name), 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1967 次 |
| 最近记录: |