擅长:python、mysql、java
<p>这是一种矢量化的方法,所以应该非常有表现力。请注意,它不处理月交叉/结束(也不处理DST更改)。我相信这就是为什么你得到了《泰晤士报》。</p>
<pre><code>In [32]: df['START_DATE'] + df['MONTHS'].values.astype("timedelta64[M]")
Out[32]:
0 2035-03-20 20:24:00
1 2035-03-20 20:24:00
2 2035-03-20 20:24:00
3 2035-03-20 20:24:00
4 2035-03-20 20:24:00
5 2024-12-31 10:12:00
6 2036-12-31 20:24:00
7 NaT
8 NaT
9 NaT
Name: START_DATE, dtype: datetime64[ns]
</code></pre>
<p>如果您需要精确的MonthEnd/Begin处理,这是一种合适的方法。(使用MonthsOffset获得同一天)</p>
<pre><code>In [33]: df.dropna().apply(lambda x: x['START_DATE'] + pd.offsets.MonthEnd(x['MONTHS']), axis=1)
Out[33]:
0 2035-02-28
1 2035-02-28
2 2035-02-28
3 2035-02-28
4 2035-02-28
5 2024-12-31
6 2036-12-31
dtype: datetime64[ns]
</code></pre>