如何在另一数据框的数据框中查找一列的值

时间:2018-07-18 14:02:41

标签: python pandas dataframe

我有两个数据框,即:

df1:

col1     col2
A1         20
B1         22         
A2         23
B2         24

df2:

Column1     Column2
A1          20
A2          23
A3          25 
A4          28
B1          22
B2          24
B3          27
B4          33

现在,我想返回df2中所有值为df1的行

因此,输出应为:

df2:

A1         20
B1         22         
A2         23
B2         24

3 个答案:

答案 0 :(得分:0)

您需要具有相同的列名才能执行完整的内部合并。

df1.rename(columns=dict(zip(df1.columns, df2.columns))).merge(df2)

输出:

   Column1  Column2
0   A1       20
1   B1       22
2   A2       23
3   B2       24

答案 1 :(得分:0)

您可以使用合并

df2.merge(df1,left_on=['Column1','Column2'],right_on=['col1','col2'],how='left').dropna()[df2.columns]
Out[446]: 
  Column1  Column2
0      A1       20
1      A2       23
4      B1       22
5      B2       24

或将tupleisin一起使用

df2[df2.apply(tuple,1).isin(df1.apply(tuple,1))]
Out[453]: 
  Column1  Column2
0      A1       20
1      A2       23
4      B1       22
5      B2       24

答案 2 :(得分:0)

您可以使用合并:

import pandas as pd
df1 = pd.DataFrame({'col1': ['A1', 'B1', 'A2', 'B2'], 'col2': [20, 22, 23, 24]})
df2 = pd.DataFrame({'Column1': ['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4'], 'Column2': [20, 23, 25, 28, 22, 24, 27, 33]})
df3 = df1.merge(df2, left_on='col1', right_on='Column1', how='left')
df4 = df3[['col1','Column2']]
print(df4)
>    col1  Column2
  0   A1       20
  1   B1       22
  2   A2       23
  3   B2       24