有一个问题是,是否可以在不进行for循环的情况下完成以下操作
我有一个类似下面的ctry表
CTRY LAG
AU 2
US 3
我的数据表看起来像这样
CTRY DATE A B C
AU 1960-01-31 0.3 0.4 0.5
US 1960-03-31 0.3 0.4 0.5
US 1960-04-30 0.35 0.42 0.54
我想要做的是按给定滞后更新每个国家/地区的日期列到月结束日期
CTRY DATE A B C
AU 1960-03-31 0.3 0.4 0.5
US 1960-06-30 0.3 0.4 0.5
US 1960-07-31 0.35 0.42 0.54
我目前正在使用for循环,但我确信有更好,更有效的方法来做到这一点非常感谢
您可以先使用merge,然后使用pd.DateOffset
,将LAG列转换为月份。
#df.DATE=pd.to_datetime(df.DATE)
s=df.merge(ctry)
s['DATE']=s['DATE']+s['LAG'].apply(lambda x : pd.DateOffset(months=x))
s
Out[452]:
CTRY DATE A B C LAG
0 AU 1960-03-31 0.30 0.40 0.50 2
1 US 1960-06-30 0.30 0.40 0.50 3
2 US 1960-07-30 0.35 0.42 0.54 3