我有以下日期数据,每个日期都赋值为1

有没有办法以某种方式获得每小时DateTime列表的pandas列表,这样除了我在xls文件中的值之外,所有的值都是0?它类似于插值,但是插值只是插值,而在这里我只希望将日期的其余部分填充为0。我希望将以下日期的整个24小时作为一个整体分配。我尝试在for循环方法中执行此操作,但它花费的时间比以往任何时候都要长,并且非常不切实际
发布于 2020-10-22 06:06:30
使用pandas datetime访问器pd.Series.dt.date从datetime对象中提取日期部分。然后使用.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 1https://stackoverflow.com/questions/64471894
复制相似问题