从两个数据框中获取匹配字符串的索引

Pro*_*aul 2 python dataframe pandas

我有两个数据框。我需要搜索 datframe 2 以查看 datframe 1 中的匹配项。并将字符串替换为其索引。

所以我想要第三个数据帧,指示从数据帧 2 到数据帧 1 的匹配字符串的索引。

  X = pd.DataFrame(np.array(['A','B','C','D','AA','AB','AC','AD','BA','BB','BC','AD']).reshape(4,3),columns=['a','b','c'])

    a   b   c
0   A   B   C
1   D   AA  AB
2   AC  AD  BA
3   BB  BC  AD


Y = pd.DataFrame(np.array(['A','AA','AC','D','B','AB','C','AD','BC','BB']).reshape(10,1),columns=['X'])


    X
0   A
1   AA
2   AC
3   D
4   B
5   AB
6   C
7   AD
8   BC
9   BB
Run Code Online (Sandbox Code Playgroud)

结果数据帧

    a   b   c
0   0   4   6
1   3   1   5
2   2   7   NA
3   9   8   7
Run Code Online (Sandbox Code Playgroud)

有人建议我使用以下代码,但似乎不太好。不工作。

t = pd.merge(df1.stack().reset_index(), df2.reset_index(), left_on = 0, right_on = "0")
res = t.set_index(["level_0", "level_1"]).drop([0, "0"], axis=1).unstack()
print(res)
Run Code Online (Sandbox Code Playgroud)

San*_*apa 5

使用applymap

Y = Y.reset_index().set_index('X')['index']
X = X.apply(lambda x: x.map(Y))
print(X)
   a  b    c
0  0  4  6.0
1  3  1  5.0
2  2  7  NaN
3  9  8  7.0
Run Code Online (Sandbox Code Playgroud)