熊猫数据框中的查找行

时间:2019-03-19 17:18:27

标签: pandas lookup

我有两个数据框(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”。

enter image description here

2 个答案:

答案 0 :(得分:2)

使用A.join(B)

结果是:

   X  Y
4  1  3
5  2  4

按索引加入,并且由于B的存在,键5中没有A中的值 不包含此密钥。

答案 1 :(得分:2)

您应该做的是使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

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

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)