0

语境:

我有两个具有以下设置的数据框:

df1 看起来像这样......并继续大约 3500 行:

| id1 | id2   | 
|:----|------:|
| a   | name1 |  
| b   | name2 | 
| c   | name3 | 
| d   | name4 | 
| e   | name5 |   
| f   | name6 |

df2 看起来像这样......并且持续大约 4000 行和大约 8 列

| id1 | ranktrial1   | ranktrial2   | ...
|:----|-------------:|-------------:| ...
| a   | rank1        |rank1         | ...
| b   | rank2        |rank2         | ...
| c   | rank3        |rank3         | ...
| d   | rank4        |rank4         | ...
| e   | rank5        |rank5         | ...  
| f   | rank6        |rank6         | ...

NOTE1:一些id1s,没有id2s。这意味着当它们被映射时它们将是 NaN;每当我到达那一步时,我都会放弃它们。我不知道这是否相关,但我只是想添加它以防万一。

问题:

如果 df2 的 id1 条目 == id1 条目,我需要将相应的 id2 名称附加/加入/放置(此处不知道正确的行话)到第二个数据帧。我该怎么做呢?

所需的数据框如下所示:

| id1 | id2   | ranktrial1   | tranktrail2  | ...
|:----|------:|-------------:|-------------:| ...
| a   | name1 | rank1        | rank1        | ...  
| b   | name2 | rank2        | rank2        | ...
| c   | name3 | rank3        | rank3        | ...
| d   | name4 | rank4        | rank4        | ...
| e   | name5 | rank5        | rank5        | ...
| f   | name6 | rank6        | rank6        | ...

我觉得这可能真的很简单,而且我有点傻,因为我是 Pythoner 新手。但是,我无法使用类似问题的回答来实现我的目标。不过,这很可能是我的错:p

在此先感谢您的帮助!

编辑更改了 4000 个条目 --> 4000 行。同样对于 3500 个条目

4

1 回答 1

1

鉴于您之后要删除丢失的位,这是一个内部连接,可以使用merge. 默认情况下,merge使用所有常用命名的列。在这种情况下,唯一常用的列是id1. 另外,how='inner'si 也是默认的。

df1.merge(df2)

  id1    id2 ranktrial1 tranktrail2
0   a  name1      rank1       rank1
1   b  name2      rank2       rank2
2   c  name3      rank3       rank3
3   d  name4      rank4       rank4
4   e  name5      rank5       rank5
5   f  name6      rank6       rank6

你可以更明确

df1.merge(df2, how='inner', on='id1')
于 2018-11-07T18:32:54.857 回答