对于可以使用下面的代码导出的示例数据帧,我想更新列Offset_Date
,以便对于列Offset_Date
中不在列Date
中的任何日期,我想用列Date
中最后一个可用值替换列Offset_Date
中的日期.
data = {"date": ['2021-01-01', '2021-01-03', '2021-01-04', '2021-01-05',
'2021-01-07', '2021-01-09', '2021-01-10', '2021-01-11'],
"offset_date": ['2021-01-02', '2021-01-04', '2021-01-05',
'2021-01-06', '2021-01-08', '2021-01-10',
'2021-01-11', '2021-01-12']}
test_df = pd.DataFrame(data)
test_df['date'] = pd.to_datetime(test_df['date'])
test_df['offset_date'] = pd.to_datetime(test_df['offset_date'])
为了进一步解释,在上述数据框的第一行中,日期2021-01-02
不在第date
列中,因此我想用第date
列中最后一个可用值替换该值,即2021-01-01
.
我想执行矢量化方法,所以我try 了以下方法,结果不正确.
test_df['offset_date_upd'] = np.where(test_df['offset_date'] in test_df['date'].values,
test_df['offset_date'],
test_df[test_df['date'] <= test_df['offset_date']].values.max())
如何使用矢量化方法获得以下所需的输出?
Desired Output
+------------+-------------+
| Date | Offset_Date |
+------------+-------------+
| 2021-01-01 | 2021-01-01 |
| 2021-03-01 | 2021-04-01 |
| 2021-04-01 | 2021-05-01 |
| 2021-05-01 | 2021-05-01 |
| 2021-07-01 | 2021-07-01 |
| 2021-09-01 | 2021-10-01 |
| 2021-10-01 | 2021-11-01 |
| 2021-11-01 | 2021-11-01 |
+------------+-------------+