Python 带日期时间索引的条件合并
df1看起来像这样-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-
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东
表示仅当周日期时间等于小时日期时间时,周日期时间才会更改…否则周日期带有上一个日期时间值未获得所需输出请检查上述注释