python-3.x - 根据与其他数据帧的差异删除数据帧行
问题描述
我使用 4 个不同的模型分析了 1000 个观察结果。这些模型的结果存储在 4 个数据帧中,如下所示:
import pandas as pd
model_1 = pd.DataFrame(data={"observation_id": [0, 1, ..., 1000],
"param_1": [0, 4, ..., 2]})
model_2 = pd.DataFrame(data={"observation_id": [0, 2, ..., 1000],
"param_1": [1, 3, ..., 1]})
其他两个类似(数据帧中实际上还有更多参数)。
“observation_id”唯一地将模型的结果与观察结果匹配。因此,observation_id 为 0 给出了该特定观察的四个模型的结果。
问题是建模数据中存在差距。model_1 可能缺少observation_id 45,model_3 可能缺少observation_id 721。
如何创建四个新数据框,其中仅包含与所有 4 个数据集共有的观察 ID 相关的结果?
解决方案
这是使用merge
with的一种方法how='left'
from functools import reduce
p1 = reduce(lambda left,right: pd.merge(left,right,on='observation_id',how='left'), [df1,df2,df3,df4])
如果你只想要一个 df 而不是四个
from functools import reduce
df = reduce(lambda left,right: pd.merge(left,right,on='observation_id',how='inner'), [df1,df2,df3,df4])
推荐阅读
- tensorflow - 与 model.predict 相比,Keras model.fit 非常非常慢
- google-analytics - 在 nuxt.js 中设置 Google Analytics 4
- r - R中的函数integrate()提供异常输出
- c++ - 为什么 std::copy() 需要 std::back_inserter 插入到具有足够容量的向量中?
- python - 嵌套枚举for循环到理解列表
- python - python:如何将 numpy 转换为 vtkCellArray
- sql-server - 从 ID 列表中选择顶部 ID
- flutter - 如何检查颤振应用程序中的执行时间?
- arrays - 检查范围内的数字 - Google 表格
- c - Atmega 带步进电机(DRVB885 驱动器)