我有两个数据框(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”。
答案 0 :(得分:2)
使用A.join(B)
。
结果是:
X Y
4 1 3
5 2 4
按索引加入,并且由于B
的存在,键5
中没有A
中的值
不包含此密钥。
答案 1 :(得分:2)
您应该做的是使index
相同,pandas
是index
敏感,这意味着他们将在分配时检查索引
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)