繁体   English   中英

如何将一个df的列条目匹配到另一个df; 如果它们相同,则将另一列的条目从第一个df附加到第二个df?

[英]How do I match a column entry from one df to a different df; and if they're the same, append another column's entry from the first df to the 2nd df?

背景:

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

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         | ...

注意1:某些id1,没有id2。 这意味着它们在被映射时将成为NaN。 并且只要我走到那一步,我就将它们放下。 我不知道这是否相关,但是我只是想添加它以防万一。

题:

我需要在第二个数据帧中追加/加入/放置(这里不知道正确的术语)对应的id2名称,前提是df2的id1条目== id1条目。 我该怎么做呢?

所需的数据帧如下所示:

| 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        | ...

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

在此先感谢您的帮助!

编辑更改了4000个条目-> 4000行。 大约3500个条目

鉴于您之后要丢弃丢失的位,这是一个内部联接,可以通过merge来完成。 默认情况下, merge使用所有通用名称的列。 在这种情况下,唯一的通用名称列是id1 另外, how='inner'也是默认值。

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM