我有两个数据框,即:
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
答案 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
或将tuple
与isin
一起使用
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