如何为 pd.merge_as_of 设置合并和规范化多个数据帧
How to set merge and normalize multple dataframes for pd.merge_as_of
我正在尝试使用 pd.merge_asof
合并多个数据帧。
它们都包含 2 个以日期时间作为索引列的列和一个具有浮动值的变量列。它们的索引和时间不平衡,所以我必须对值进行标准化。
Date value1
2021-10-22 19:22:25 23.5
2021-10-22 19:22:40 23.4
2021-10-22 19:22:55 23.5
2021-10-22 19:30:12 23.6
2021-10-22 19:30:42 23.5
Date value2
2021-10-22 19:22:25 12
2021-10-22 19:22:40 12
2021-10-22 19:22:55 12
2021-10-22 19:30:12 16
2021-10-22 19:30:42 16
我可以像这样使用
成功合并 dfs 并规范化这些值
merged = pd.merge_asof(data_frames[0],data_frames[1], left_index=True,right_index=True,direction='nearest')
Date value1 value2
2021-10-22 19:22:25 23.5 12
2021-10-22 19:22:40 23.4 12
2021-10-22 19:22:55 23.5 12
2021-10-22 19:30:12 23.6 16
2021-10-22 19:30:42 23.5 16
现在我要做的是合并 2 个以上的数据帧。我试过这样做:
merged = pd.merge_asof(data_frames[0],data_frames[1],data_frames[2],left_index=True,right_index=True,direction='nearest')
但我收到错误
pandas.errors.MergeError: Can only pass argument "on" OR "left_index" and "right_index", not a combination of both.
我不确定它表示什么。我删除了其中一个索引参数,它仍然说同样的话。我有什么办法可以得到我需要做的事情吗?
我希望能够将具有 value3 列的 dataframe3 附加到 value2 列的右侧。
根据文档,merge_asof 只能接受两个数据帧,错误是因为在函数的第三个参数中它需要一些其他参数。
正如@Quang Hoang 提到的,您可以使用 reduce
函数来累积应用 two-parameter 函数。你的情况是:
merged = reduce(lambda left, right: pd.merge_asof(left, right,left_index=True,right_index=True, direction='nearest'), data_frames)
我正在尝试使用 pd.merge_asof
合并多个数据帧。
它们都包含 2 个以日期时间作为索引列的列和一个具有浮动值的变量列。它们的索引和时间不平衡,所以我必须对值进行标准化。
Date value1
2021-10-22 19:22:25 23.5
2021-10-22 19:22:40 23.4
2021-10-22 19:22:55 23.5
2021-10-22 19:30:12 23.6
2021-10-22 19:30:42 23.5
Date value2
2021-10-22 19:22:25 12
2021-10-22 19:22:40 12
2021-10-22 19:22:55 12
2021-10-22 19:30:12 16
2021-10-22 19:30:42 16
我可以像这样使用
成功合并 dfs 并规范化这些值 merged = pd.merge_asof(data_frames[0],data_frames[1], left_index=True,right_index=True,direction='nearest')
Date value1 value2
2021-10-22 19:22:25 23.5 12
2021-10-22 19:22:40 23.4 12
2021-10-22 19:22:55 23.5 12
2021-10-22 19:30:12 23.6 16
2021-10-22 19:30:42 23.5 16
现在我要做的是合并 2 个以上的数据帧。我试过这样做:
merged = pd.merge_asof(data_frames[0],data_frames[1],data_frames[2],left_index=True,right_index=True,direction='nearest')
但我收到错误
pandas.errors.MergeError: Can only pass argument "on" OR "left_index" and "right_index", not a combination of both.
我不确定它表示什么。我删除了其中一个索引参数,它仍然说同样的话。我有什么办法可以得到我需要做的事情吗?
我希望能够将具有 value3 列的 dataframe3 附加到 value2 列的右侧。
根据文档,merge_asof 只能接受两个数据帧,错误是因为在函数的第三个参数中它需要一些其他参数。
正如@Quang Hoang 提到的,您可以使用 reduce
函数来累积应用 two-parameter 函数。你的情况是:
merged = reduce(lambda left, right: pd.merge_asof(left, right,left_index=True,right_index=True, direction='nearest'), data_frames)