Python 带日期时间索引的条件合并

Python 带日期时间索引的条件合并,python,Python,df1看起来像这样- week_date Values 21-04-2019 00:00:00 10 28-04-2019 00:00:00 20 hourly_date hour_val 21-04-2019 00:00:00 a 21-04-2019 01:00:00 b 21-04-2019 02:00:00 c 21-

df1看起来像这样-

week_date                   Values
21-04-2019 00:00:00          10
28-04-2019 00:00:00          20
hourly_date                 hour_val
21-04-2019 00:00:00            a
21-04-2019 01:00:00            b
21-04-2019 02:00:00            c
21-04-2019 03:00:00            d
28-04-2019 00:00:00            e
df2看起来像这样-

week_date                   Values
21-04-2019 00:00:00          10
28-04-2019 00:00:00          20
hourly_date                 hour_val
21-04-2019 00:00:00            a
21-04-2019 01:00:00            b
21-04-2019 02:00:00            c
21-04-2019 03:00:00            d
28-04-2019 00:00:00            e
结果数据集应该如下所示

week_date                 Values      hourly_date                 hour_val
21-04-2019 00:00:00          10        21-04-2019 00:00:00            a
21-04-2019 00:00:00          10        21-04-2019 01:00:00            b
21-04-2019 00:00:00          10        21-04-2019 02:00:00            c
21-04-2019 00:00:00          10        21-04-2019 03:00:00            d
28-04-2019 00:00:00          20        28-04-2019 00:00:00            e
week_date                 Values      hourly_date                 hour_val
21-04-2019 00:00:00          10        21-04-2019 00:00:00            a
21-04-2019 00:00:00          10        21-04-2019 01:00:00            b
21-04-2019 00:00:00          10        21-04-2019 02:00:00            c
21-04-2019 00:00:00          10        21-04-2019 03:00:00            d
28-04-2019 00:00:00          20        28-04-2019 00:00:00            e
我每周有数百行数据,每小时有数千行数据。
正在尝试合并,但未获得所需的输出

merge=pd.merge(df1,df2, how='outer', left_index=True, right_index=True)
结果数据集应该如下所示

week_date                 Values      hourly_date                 hour_val
21-04-2019 00:00:00          10        21-04-2019 00:00:00            a
21-04-2019 00:00:00          10        21-04-2019 01:00:00            b
21-04-2019 00:00:00          10        21-04-2019 02:00:00            c
21-04-2019 00:00:00          10        21-04-2019 03:00:00            d
28-04-2019 00:00:00          20        28-04-2019 00:00:00            e
week_date                 Values      hourly_date                 hour_val
21-04-2019 00:00:00          10        21-04-2019 00:00:00            a
21-04-2019 00:00:00          10        21-04-2019 01:00:00            b
21-04-2019 00:00:00          10        21-04-2019 02:00:00            c
21-04-2019 00:00:00          10        21-04-2019 03:00:00            d
28-04-2019 00:00:00          20        28-04-2019 00:00:00            e

您可以在
合并。在这种情况下,请尝试以下操作:

将熊猫作为pd导入
df1=pd.DataFrame(
{
“周日”:[“2019年4月21日00:00:00”,“2019年4月28日00:00:00”],
“价值”:[10,20]
}
)
df2=pd.DataFrame(
{
“小时日”:[
"21-04-2019 00:00:00",
"21-04-2019 01:00:00",
"21-04-2019 02:00:00",
"21-04-2019 03:00:00",
"28-04-2019 00:00:00"
],
“小时”:[“a”、“b”、“c”、“d”、“e”]
}
)
df1.week_date=pd.to_datetime(df1.week_date)
df1=df1.设置索引(“周日”,drop=False)
df2.hourly_date=pd.to_datetime(df2.hourly_date)
df2=df2.设置索引(“每小时日期”,drop=False)
pd.合并(df1、df2、,
左开=[df1.week\u date.dt.week,df1.week\u date.dt.year],
右上=[df2.hourly\u date.dt.week,df2.hourly\u date.dt.year]
)[[“周日”、“值”、“小时日”、“小时值”]]。设置索引(“周日”)
这个输出

         Values hourly_date hour_val
week_date           
2019-04-21  10  2019-04-21 00:00:00 a
2019-04-21  10  2019-04-21 01:00:00 b
2019-04-21  10  2019-04-21 02:00:00 c
2019-04-21  10  2019-04-21 03:00:00 d
2019-04-28  20  2019-04-28 00:00:00 e

没有得到想要的结果

我的原始数据集如下所示

数据-1: 星期日值 2019-04-19 20:00:00 10 2019-04-26 20:00:00 20

数据-2: 小时日小时值 2019-04-2601:00:00A 2019-04-2602:00:00B 2019-04-26 03:00:00摄氏度 2019-04-26 20:00:00D 2019-04-26 21:00:00东

并且期望的输出应该是-

                 Values    hourly_date       hour_val
星期日
2019-04-19 20:00:00 10 2019-04-26 01:00:00 a 2019-04-19 20:00:00 10 2019-04-26 02:00:00 b 2019-04-19 20:00:00 10 2019-04-26 03:00:00 c 2019-04-26 20:00:00 20 2019-04-26 20:00:00 d 2019-04-26 20:00:00 20 2019-04-26 21:00:00东


表示仅当周日期时间等于小时日期时间时,周日期时间才会更改…否则周日期带有上一个日期时间值

未获得所需输出请检查上述注释