我有DataFrame
df1
:
| ID | A |
---------
| 1 | 4 |
| 1 | 4 |
| 2 | 1 |
| 2 | 3 |
| 3 | 2 |
和DataFrame
df2
:
| ID | B |
---------
| 1 | 2 |
| 2 | 2 |
| 3 | 9 |
我想(左)加入这些,但只想保留df2
的列。
什么是简单易行的解决方案?
结果DataFrame
应该看起来像这样:
|ID | B |
---------
| 1 | 2 |
| 1 | 2 |
| 2 | 2 |
| 2 | 2 |
| 3 | 9 |
答案 0 :(得分:1)
执行加入并仅选取df2
df2.merge(df1, on='ID')[df2.columns]
# output:
B ID
0 2 1
1 2 1
2 2 2
3 2 2
4 9 3
答案 1 :(得分:1)
您可以将ID列从df1
切片为DataFrame并合并到ID:
import pandas as pd
df1 = pd.DataFrame({'ID': [1, 1, 2, 2, 3],
'A': [4, 4, 1, 2, 3]
})
df2 = pd.DataFrame({'ID': [1, 2, 3],
'B': [2, 2, 9]
})
merged = df1[['ID']].merge(df2, how='left')
这将返回以下格式的DataFrame:
ID B
0 1 2
1 1 2
2 2 2
3 2 2
4 3 9
答案 2 :(得分:1)
当两个 DF 具有相同的列名时,以下将不起作用,因为 Pandas 会自动重命名列 (_x,_y)
df2.merge(df1, on='ID')[df2.columns]