Python:PerformanceWarning:将对象数据类型数组添加/减去未矢量化的 TimedeltaArray

nba*_*020 2 python pandas

我有一个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)

我应该如何调整我的代码来修复此警告?

Sea*_*ean 5

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)