pandas 数据框中的查找行

Lookup row in pandas dataframe

我有两个数据框(A 和 B)。对于 A 中的每一行,我想查找 B 中的一些信息。我试过:

A = pd.DataFrame({'X' : [1,2]},   index=[4,5])
B = pd.DataFrame({'Y' : [3,4,5]}, index=[4,5,6])

C = pd .DataFrame(A.index)
C .columns = ['I']
C['Y'] = B .loc[C.I, 'Y']

我想要 '3, 4' 但我得到 'NaN', 'NaN'.

使用A.join(B).

结果是:

   X  Y
4  1  3
5  2  4

通过 B 中的索引和值加入,因为 5 不存在键 A 不包含此密钥。

你应该做的是让 index 相同,pandasindex 敏感的,这意味着他们会在赋值时检查索引

C = pd .DataFrame(A.index,index=A.index) # change here
C .columns = ['I']
C['Y'] = B .loc[C.I, 'Y']
C
Out[770]: 
   I  Y
4  4  3
5  5  4

或者只需修改您的代码,在末尾添加 .values

C['Y'] = B .loc[C.I, 'Y'].values

既然你提到查找让我们使用 lookup

C['Y']=B.lookup(C.I,['Y']*len(C))
#Out[779]: array([3, 4], dtype=int64)