使用timezoneaware列构造数据帧时出现警告

2024-06-02 06:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行以下代码时:

import pandas as pd

dr = pd.date_range('2020-06-22 15:00:00', '2020-06-25 15:00:00', freq='1d')
x = pd.DataFrame({'dt': dr.tz_localize('America/New_York')}, columns=['dt'])
print(x.dt)

print(pd.__version__)

我得到以下警告:

pandas/core/internals/construction.py:791: FutureWarning: Converting timezone-aware 
DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will 
return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the 
correct 'tz'.
    To accept the future behavior, pass 'dtype=object'.
    To keep the old behavior, pass 'dtype="datetime64[ns]"'.
  subarr = construct_1d_object_array_from_listlike(subarr)
0   2020-06-22 15:00:00-04:00
1   2020-06-23 15:00:00-04:00
2   2020-06-24 15:00:00-04:00
3   2020-06-25 15:00:00-04:00
Name: dt, dtype: datetime64[ns, America/New_York]
0.25.3

我在the ^{} release notes中看到“熊猫的未来版本将通过返回一个对象dtype NumPy数组来保留时区信息,其中每个值都是一个附加了正确时区的时间戳”。但是我不想要object类型的列,我想要一个在列级别附加了正确时区的datetime(某种类型)

另外,print(x.dt)输出似乎表明列确实保留了时区信息。这是一个虚假的警告,还是在未来版本的pandas中确实会停止这样的工作

如输出所示,我使用的是Pandas 0.25.3。谢谢

注意:我看到了关于这个警告的其他几个问题,但它们似乎是关于排序aDataFrame,而不仅仅是构造一个


Tags: the警告pandasnewobjectwithdttz