python - 如何为 pd.merge_asof 设置合并和规范化多个数据帧

标签 python pandas dataframe indexing merge

我正在尝试使用 pd.merge_asof 合并多个数据帧。

它们都包含 2 个以日期时间作为索引列的列和一个具有 float 值的变量列。它们的索引和时间不平衡,因此我必须对值进行标准化。

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 函数累积应用双参数函数。你的情况的方式是:

merged = reduce(lambda left, right: pd.merge_asof(left, right,left_index=True,right_index=True, direction='nearest'), data_frames)

关于python - 如何为 pd.merge_asof 设置合并和规范化多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71931584/

相关文章:

python - 如何使用 python 收集 GDI 和用户对象的性能指标

python - 您可以使用 python 在命令提示符下键入文本并按回车键吗?

python - 如何检查 Pandas 系列是否为空?

python - 将逗号后的最后一项提取到新列中

python - 使用 pandas python 将嵌套的 JSON 解析为多个数据框

字符串上的 Python hash() 函数

python - 如何使用pandas.Series.dt.strftime可以做每小时映射?

python - 如何在 Python 3 中使用 "melt" `pandas.DataFrame` 对象?

python - 列出数据框列中存在的所有数据类型

javascript - 在Python中使用函数声明全局变量