首页 > 解决方案 > 基于具有重复键的键有效地将一个数据帧与另一个数据帧匹配

问题描述

我有两个数据框:一个 id 数据框和一个事件数据框,大致如下: id 表:

id    date
N103  09-01
N434  09-03
N234  08-10

事件表:

id    date   Event name
N103  08-01  Failure
N104  12-02  Alarm
N103  12-02  Warning
N234  11-09  Information
N103  12-01  Disabled

我想从 id 数据框中的事件数据框中获取所有行。所以,对于我的例子,输出是

N103  08-01  Failure
N103  12-02  Warning
N234  11-09  Information
N103  12-01  Disabled

问题是我的 id 数据框有 2.500 行,而我的事件数据框有 900.000.000 行。因此,我正在寻找一种非常有效的方法来做到这一点。我目前拥有的是:

data = []
for id in id_dataframe['id']:
    part = event[event['id']==id]
    data.append(part)

然而,这似乎非常低效,因为每次我将“id”与事件数据帧中的所有 id 进行比较。

有没有更有效的方法,可以相对容易地实现?

标签: pythonpandasdataframe

解决方案


你能做到,

result = id_dataframe.merge(event, on='id', how='right')

推荐阅读