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
相同,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
或者只需修改您的代码,在末尾添加 .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)
我有两个数据框(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
相同,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
或者只需修改您的代码,在末尾添加 .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)