提问人:IRON MAN 提问时间:9/28/2023 最后编辑:IRON MAN 更新时间:9/28/2023 访问量:51
'pd.date_range()'如何在不调用'DatetimeIndex'类的任何方法的情况下创建'DatetimeIndex'的对象?
How does `pd.date_range()` creates an object of `DatetimeIndex`, without calling any method of the class `DatetimeIndex`?
问:
这是我正在使用的 csv 文件,它以 day 列作为索引
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,它说创建了一个类 DatetimeIndex 的实例。于是我问它,使用函数时调用DatetimeIndex类的哪个方法?pd.date_range()
pd.date_range()
它回答说,不直接调用 DatetimeIndex 类的构造函数,但它实现了相同的结果。pd.date_range()
我无法理解这一点。有人可以解释一下吗?
答:
0赞
mozway
9/28/2023
#1
您不需要显式调用 ,pandas.date_range
已返回 .DatetimeIndex
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_range pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, inclusive='both', *, unit=None, **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
评论
0赞
IRON MAN
9/28/2023
是的,你是对的。我也是这么想的,但我不确定,因为我是通过观看 YouTube 视频来学习的,他以这种方式编写代码
0赞
mozway
9/28/2023
@IRONMAN 我建议忘记 ChatGPT 来学习如何编码(这非常糟糕,即使它提供了似乎有效的代码)。并始终参考官方的 python/pandas 文档,这些文档写得很好。
0赞
IRON MAN
9/28/2023
谢谢@mozway,我会牢记这一点。我还有一个问题。函数调用哪个方法来创建类的对象。我查看了有关此内容的文档,但找不到。你能解释一下吗?pd.date_range()
DatetimeIndex
评论
__init__