Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一个数据帧中的id分配数据帧id_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 基于另一个数据帧中的id分配数据帧id

Python 基于另一个数据帧中的id分配数据帧id,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有两个数据帧称为数据帧A和数据帧B A id| column1 |column2 3 | 439 | 2398 41| 498 | 34 2 | 233 | 43 B column1 |column2 439 | 2398 498 | 56 233 | 43 我想根据数据帧A中的id为数据帧B分配一个id列。如果

我有两个数据帧称为数据帧A和数据帧B

             A
    id| column1 |column2
    3 |    439  |  2398
    41|    498  |   34
    2 |    233  |   43

           B
    column1 |column2
      439   |  2398
      498   |   56
      233   |   43
我想根据数据帧A中的id为数据帧B分配一个id列。如果数据帧A和数据帧B中存在一行,我想将相应的id从数据帧A分配给数据帧B。如果数据帧B中的一行不在数据帧A中,我想将“无”分配给B中id列中的该单元格。也就是说,我想要

             B
    id  | column1 |column2
    3   |    439  |  2398
    None|    498  |   56
    2   |    233  |   43

问题:如何根据数据帧B中的列将ID从数据帧A分配到数据帧B?

您可以使用左合并。注意:对于数值系列
NaN
值将强制
id
系列成为
float
类型。在大多数情况下,这不是问题,我不建议您逐行“强制”类型转换

res = pd.merge(B, A, how='left')

print(res)

   column1  column2   id
0      439     2398  3.0
1      498       56  NaN
2      233       43  2.0

谢谢你的回答!如果dataframe B已经有一个id列具有NaN值,这是否也可以工作?这会将该id覆盖为数据帧A中的id吗?@titusAdam,不会。那会是。根据您的输入,解决方案假定
B
只有列
['column1','column2']