根据来自另一个数据框的条件在一个数据框中找到行

时间:2018-07-04 07:13:31

标签: python dataframe

我已经从一个主数据框创建了两个数据框,例如df1和df2。

每个数据框具有相同的列数,但df2中的行数将少于df1中的行数。数据框将具有一列waferlot,x,y,w。

如何在df1中从df2搜索晶圆,x,y,w。

1 个答案:

答案 0 :(得分:0)

虽然有多种方法可以实现此目的,但注释中已经提到了其中一种,但是我通常使用isin来做到这一点:

给出两个数据框:

import pandas as pd

df1 = pd.DataFrame()
df1['C1'] = ['a', 'b', 'c', 'd', 'e', 'f']
df1['C2'] = ['b', 'c', 'x', 'w', 'h', 'j']
df2 = pd.DataFrame()
df2 ['C1'] = ['x', 'a', 'c', 'f']
df2 ['C2'] = ['w', 'h', 'd', 'j']

数据帧如下:

In [144]: df1
Out[144]:
  C1 C2
0  a  b
1  b  c
2  c  x
3  d  w
4  e  h
5  f  j

In [145]: df2
Out[145]:
  C1 C2
0  x  w
1  a  h
2  c  d
3  f  j

现在,我可以使用isin在数据框的所有列中搜索所需的内容。

x = (df1[df1.C1.isin(df2.C1) & df1.C2.isin(df2.C2)])

输出:

  C1 C2
5  f  j

如果您只想搜索一列,则可以删除&之前或之后的条件之一:

x = (df1[df1.C1.isin(df2.C1)])

输出:

  C1 C2
0  a  b
2  c  x
5  f  j