Python 如何在数据帧中不同长度的列之间执行交叉检查并创建新的数据帧?

Python 如何在数据帧中不同长度的列之间执行交叉检查并创建新的数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧 df1: df2: 我想基于df1和df2的pno列创建一个新的df。因此,df3: pno | bno | report 11 | 12 | somereporter.pdf 12 | 12 | somereportf.pdf 11 | 12 | somereportwee.pdf 11 | 12 | somereport22.pdf 也就是说,新df将只具有df2 pno列中的值。我尝试使用mergefunction作为 newdf = pd.merge(df1, df2,

我有两个数据帧

df1:

df2:

我想基于df1和df2的pno列创建一个新的df。因此,df3:

pno | bno | report
11 | 12 | somereporter.pdf
12 | 12 | somereportf.pdf
11 | 12 | somereportwee.pdf
11 | 12 | somereport22.pdf
也就是说,新df将只具有df2 pno列中的值。我尝试使用mergefunction作为

newdf = pd.merge(df1, df2, how="inner", on=["pno","pno"]
但它创建了一些随机形状,其中有很多缺少的值。我试着做左键连接

newdf = pd.merge(df1, df2, how="left", on=["pno","pno"]
但它保留了所有的值,没有交叉检查


是否有办法将一列与另一列交叉检查,并仅将这些值保留在新的df中?

使用isin筛选并屏蔽所需的行

df1[df1['pno'].isin(df2['pno'])]

使用isin筛选和屏蔽所需的行

df1[df1['pno'].isin(df2['pno'])]
df1[df1['pno'].isin(df2['pno'])]