我正在try 使用pd.merge_asof合并多个数据帧.

它们都包含两列,分别以datetime作为索引列和一个浮动值的变量列.它们的索引和时间不平衡,所以我必须将值标准化.

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

现在我想做的是合并两个以上的数据帧.我试着这么做:

    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.

我不确定这表明了什么.我删除了其中一个索引参数,它仍然说了同样的话.我能得到我需要做的吗?

我希望能够在value2列的右边附加dataframe3,它有value3列.

推荐答案

根据文档,merge_asof只能接受两个数据帧,导致错误的原因是,在函数的第三个参数中,它需要一些其他参数.

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

Python相关问答推荐

Django序列化器没有验证或保存数据

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

阅读Polars Python中管道的函数定义

强制venv在bin而不是收件箱文件夹中创建虚拟环境

Python plt.text中重叠,包adjust_text不起作用,如何修复?

如何使用Google Gemini API为单个提示生成多个响应?

提取两行之间的标题的常规表达

如何在图片中找到这个化学测试条?OpenCV精明边缘检测不会绘制边界框

try 与gemini-pro进行多轮聊天时出错

为什么符号没有按顺序添加?

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

如何创建一个缓冲区周围的一行与manim?

创建可序列化数据模型的最佳方法

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

Tkinter菜单自发添加额外项目

在Python中调用变量(特别是Tkinter)

如何在达到end_time时自动将状态字段从1更改为0

在Admin中显示从ManyToMany通过模型的筛选结果

导入错误:无法导入名称';操作';