我有两个数据框 df 和 df1。我想在 df1 的第 0 行到第 5 行中查找匹配项 (df),并且只返回匹配的值和范围。 例如下面的例子
import collections
import numpy as np
import pandas as pd
df = pd.DataFrame([[2],
[23],
[14],
[33],
[35],
[26]],
columns = ['Col1'])
df1 = pd.DataFrame([[1,2,4,5,6,8,-19],
[5,6,20,22,23,34,50],
[8,12,13,34,45,46,23],
[9,10,14,29,32,33,-10],
[1,22,13,23,33,35,2],
[1,6,7,8,9,10,6],
[0,2,3,5,6,8,23]],
columns = ['Num1','Num2','Num3','Num4','Num5','Num6','Range'])
我想要这样的结果。
result = pd.DataFrame([[2,-19],
[2,23],
[23,50],
[23,2],
[14,-10],
[33,-10],
[33,2],
[35,2]],
columns = ['Match','Range'])
最佳答案
代码:
df2 = df1.melt(id_vars='Range', value_vars=['Num1', 'Num2', 'Num3', 'Num4', 'Num5', 'Num6']) #reshape for easy filter
result = df2[df2['value'].isin(df['Col1'])] # rows based filter
result = result.rename(columns={'value': 'Match'})
print(result[['Match', 'Range']])
输出:
Match Range
7 2 -19
13 2 23
17 14 -10
25 23 2
29 23 50
32 33 2
38 33 -10
39 35 2
关于python - 如何在两个数据框中查找匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77538654/