像插值一样在 pandas 中扩展日期时间数据

expand datetime data in pandas like interpolation

我有以下日期数据,每个日期都分配了值 1

有没有办法以某种方式获得 pandas 每小时 DateTime 列表的列表,以便所有值都为 0,除了我的 xls 文件中的值? 它类似于插值,但插值只是插值,而在这里我只想填充日期的其余部分,因为 0.I 希望分配以下日期的整个 24 小时,因为 one.I 试图这样做在 for 循环方法中,但它比以往任何时候都需要更长的时间,而且非常不实用

使用 pandas 日期时间访问器 pd.Series.dt.date to extract the date part from datetime objects. And then use .isin() 来匹配值。

# sample data
df = pd.DataFrame({  # list of dates
    "date": [date(2020,10,2), date(2020,10,4)]
})
df_hr = pd.DataFrame({  # list of hours from Oct.1 to 4
    "hr": [datetime(2020,10,1,0,0) + i * timedelta(hours=1) for i in range(24*4)]
})

df_hr["flag"] = 0
df_hr.loc[df_hr["hr"].dt.date.isin(df["date"]), "flag"] = 1

# show the first and last hour of each day
df_hr.loc[[0,23,24,47,48,71,72,95]]
Out[111]: 
                    hr  flag
0  2020-10-01 00:00:00     0
23 2020-10-01 23:00:00     0
24 2020-10-02 00:00:00     1
47 2020-10-02 23:00:00     1
48 2020-10-03 00:00:00     0
71 2020-10-03 23:00:00     0
72 2020-10-04 00:00:00     1
95 2020-10-04 23:00:00     1