根据具有重复键的键,有效地将一个数据框与另一个数据框进行匹配

时间:2020-10-07 17:50:27

标签: python pandas dataframe

我有两个数据框:一个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进行比较。

执行此操作的效率更高吗?可以相对容易地实现吗?

1 个答案:

答案 0 :(得分:1)

你可以做到,

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