通过考虑来自另一个表的数据来延迟日期

问题描述 投票:0回答:1

有一个问题是,是否可以在不进行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循环,但我确信有更好,更有效的方法来做到这一点非常感谢

pandas
1个回答
1
投票

您可以先使用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
© www.soinside.com 2019 - 2024. All rights reserved.