加入DataFrames,但只保留一列

时间:2017-07-12 15:05:49

标签: python pandas

我有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 |

3 个答案:

答案 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]