我有一个DF包含 2 个日期列(对象数据类型)的数据框,格式如下:
date_column1 date_column2
2021-08-14 2021-09-19
2021-10-11 2021-11-02
2019-09-15 2021-10-25
... ...
Run Code Online (Sandbox Code Playgroud)
我想根据以下内容插入一个新列:
DF['date_new'] = DF['date_column2'] + (DF['date_column2']-DF['date_column1'])
Run Code Online (Sandbox Code Playgroud)
该代码有效,但我收到以下警告
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\arrays\datetimelike.py:1190:
PerformanceWarning: Adding/subtracting object-dtype array to TimedeltaArray not vectorized
Run Code Online (Sandbox Code Playgroud)
我应该如何调整我的代码来修复此警告?
date_column1用您的示例数据进行模拟,当您的数据类型为字符串类型而date_column2日期时间类型时,就会发生这种情况。其他组合会产生其他类型的错误。当两者都是datetime类型时,就不会有错误。
您可以通过转换为日期时间类型来解决警告date_column1,如下所示:
DF['date_column1'] = pd.to_datetime(DF['date_column1'])
# or to play safe, also convert `date_column2`
DF['date_column2'] = pd.to_datetime(DF['date_column2'])
Run Code Online (Sandbox Code Playgroud)
之后,您将在没有警告的情况下获得成功结果,如下所示:
0 2021-10-25
1 2021-11-24
2 2023-12-05
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)