`pd.date_range()`如何创建一个`DatetimeIndex`对象,而不调用`DatetimeIndex`类的任何方法?

问题描述 投票:0回答:1

这是我正在使用的csv文件,其中以日期列作为索引

            temperature  windspeed   event
day                                       
2017-01-01         32.0        6.0    Rain
2017-01-04          NaN        9.0   Sunny
2017-01-05         28.0        NaN    Snow
2017-01-06          NaN        7.0     NaN
2017-01-07         32.0        NaN    Rain
2017-01-08          NaN        NaN   Sunny
2017-01-09          NaN        NaN     NaN
2017-01-10         34.0        8.0  Cloudy
2017-01-11         40.0       12.0   Sunny

我正在运行此代码以在包含日期值的日期列中插入缺失的日期值。

dt = pd.date_range("01-01-2017","01-11-2017")
idx = pd.DatetimeIndex(dt)
df = df.reindex(idx)

代码工作正常,但我想了解此代码片段在幕后如何工作,因此我查看了文档,但找不到确切的解释。

然后我问ChatGPT,它说

pd.date_range()
创建了DatetimeIndex类的实例。于是我就问了,使用
pd.date_range()
函数时会调用DatetimeIndex类的哪个方法?

它回答说,

pd.date_range()
不直接调用DatetimeIndex类的构造函数,但完成了相同的结果。

我无法理解这一点。有人可以帮我解释一下吗?

python pandas date-range datetimeindex
1个回答
0
投票

您不需要显式调用

DatetimeIndex
pandas.date_range
已经返回了
DatetimeIndex

# ensure index is datetime
df.index = pd.to_datetime(df.index)

dt = pd.date_range("01-01-2017","01-11-2017")
out = df.reindex(dt)

为什么?因为它是这样写的:

pandas.date_rangepandas.date_range(开始=无,结束=无,周期=无,频率=无,tz=无,标准化=假,名称=无, 包含='两者',*,单位=无,**kwargs)

...

退货: 日期时间索引

输出:

            temperature  windspeed   event
2017-01-01         32.0        6.0    Rain
2017-01-02          NaN        NaN     NaN
2017-01-03          NaN        NaN     NaN
2017-01-04          NaN        9.0   Sunny
2017-01-05         28.0        NaN    Snow
2017-01-06          NaN        7.0     NaN
2017-01-07         32.0        NaN    Rain
2017-01-08          NaN        NaN   Sunny
2017-01-09          NaN        NaN     NaN
2017-01-10         34.0        8.0  Cloudy
2017-01-11         40.0       12.0   Sunny
© www.soinside.com 2019 - 2024. All rights reserved.