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