Python 连接数据帧,但只保留一个数据帧的列

Python 连接数据帧,但只保留一个数据帧的列,python,pandas,Python,Pandas,我有一个DataFramedf1: | ID | A | --------- | 1 | 4 | | 1 | 4 | | 2 | 1 | | 2 | 3 | | 3 | 2 | 和数据帧df2: | ID | B | --------- | 1 | 2 | | 2 | 2 | | 3 | 9 | 我想(左)加入这些,但只想保留df2的列。 什么是一个简单的解决方案 生成的DataFrame应该是这样的: |ID | B | --------- | 1 | 2 | | 1 |

我有一个
DataFrame
df1

| ID | A |
---------
| 1  | 4 |
| 1  | 4 |
| 2  | 1 |
| 2  | 3 |
| 3  | 2 |
数据帧
df2

| ID | B |
---------
| 1  | 2 |
| 2  | 2 |
| 3  | 9 |
我想(左)加入这些,但只想保留
df2
的列。 什么是一个简单的解决方案

生成的
DataFrame
应该是这样的:

|ID | B |
---------
| 1 | 2 |
| 1 | 2 |
| 2 | 2 |
| 2 | 2 |
| 3 | 9 |

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

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

您可以将
df1
中的ID列作为数据帧进行切片,并在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')
这将返回以下格式的数据帧:

   ID  B
0   1  2
1   1  2
2   2  2
3   2  2
4   3  9

您可以将
df1
中的ID列作为数据帧进行切片,并在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')
这将返回以下格式的数据帧:

   ID  B
0   1  2
1   1  2
2   2  2
3   2  2
4   3  9

当两个DFs具有相同的列名时,以下操作将不起作用,因为熊猫会自动重命名列(_x,_y)

df2.merge(df1, on='ID')[df2.columns]

当两个DFs具有相同的列名时,以下操作将不起作用,因为熊猫会自动重命名列(_x,_y)

df2.merge(df1, on='ID')[df2.columns]

嘿我想你应该在相应的答案中加上这句话作为评论,而不是再贴一句:)哦,呜呜!会修好的!嘿我想你应该在相应的答案中加上这句话作为评论,而不是再贴一句:)哦,呜呜!会修好的!