我有两个数据框。我需要搜索 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
结果数据帧
a b c
0 0 4 6
1 3 1 5
2 2 7 NA
3 9 8 7
有人建议我使用以下代码,但似乎并不合适。不工作。
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)
最佳答案
将apply
与map
一起使用:
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
关于python - 从两个数据框中获取匹配字符串的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63124544/