使用数据帧列以相同顺序从另一个帧中 select 行

Use a dataframes column to select rows from another frame in the same order

需要一些 pandas 从这里开始:

考虑两个数据帧 AB。两者都包含具有标识符值的列 id

A: id     valA
   8      ?
   2      ?
   4      ?

B: id     valB    valC   
   1      ?       ?      
   4      ?       ?      
   3      ?       ?      
   8      ?       ?      
   2      ?       ?      

我需要一个版本的数据框 B,它仅包含包含来自 A[id] 的标识符的行,其顺序与 A 中的顺序完全相同。即:

B': id     valB     valC
    8      ?        ?
    2      ?        ?
    4      ?        ?

我认为这是 pandas 中的基本操作,但我现在似乎缺少 google 的词汇。

我试过了

B.loc[B['id'].isin(A['id'])]

但这似乎不是解决方案 - 结果中的列 idA.

中的值顺序不同

您可以使用 pd.merge

In [92]: A.merge(B)
Out[92]:
   id valA valB valC
0   8    ?    ?    ?
1   2    ?    ?    ?
2   4    ?    ?    ?