Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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 在pandas中使用数据帧时,如何在只有一些列相同的情况下附加数据帧?_Python_Pandas_Dataframe - Fatal编程技术网

Python 在pandas中使用数据帧时,如何在只有一些列相同的情况下附加数据帧?

Python 在pandas中使用数据帧时,如何在只有一些列相同的情况下附加数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,如果我有一个像这样的数据框 rootID parentID jobID counter 0 A B D 0 1 E F G 0 2 A C D 0 3 E B F

如果我有一个像这样的数据框

             rootID   parentID    jobID    counter
          0    A         B          D         0
          1    E         F          G         0
          2    A         C          D         0
          3    E         B          F         0
          4    E         F          G         0
还有一个数据框看起来像这样

             rootID   parentID    StepID
          0    A         B          1     
          1    A         F          2      
          2    A         C          3    
          3    E         B          4    
          4    E         F          5    
如何根据它们的共同键“rootID”和“parentID”将第二个数据帧附加到第一个数据帧,以便

             rootID   parentID    jobID    counter   stepÌD
          0    A         B          D         0        Null
          1    E         F          G         0        Null
          2    A         C          D         0        Null
          3    E         B          F         0        Null
          4    E         F          G         0        Null
          5    A         B         Null      Null       1 
          6    A         F         Null      Null       2
          7    A         C         Null      Null       3
          8    E         B         Null      Null       4
          9    E         F         Null      Null       5    

感谢您的帮助

尝试,
pd.concat
,pandas具有内在的数据对齐功能,因此在使用此功能和大多数其他功能时,pandas将保持行索引标签和列标题对齐:

pd.concat([df, df2], ignore_index=True, sort=False)
输出:

  rootID parentID jobID  counter  StepID
0      A        B     D      0.0     NaN
1      E        F     G      0.0     NaN
2      A        C     D      0.0     NaN
3      E        B     F      0.0     NaN
4      E        F     G      0.0     NaN
5      A        B   NaN      NaN     1.0
6      A        F   NaN      NaN     2.0
7      A        C   NaN      NaN     3.0
8      E        B   NaN      NaN     4.0
9      E        F   NaN      NaN     5.0

注意:pandas有一个不幸的副作用,就是将包含NaN的数字列转换为浮点数据类型。

试试看,
pd.concat
,pandas具有内在的数据对齐,因此在使用此函数和大多数其他函数时,pandas将保持行索引标签和列标题对齐:

pd.concat([df, df2], ignore_index=True, sort=False)
输出:

  rootID parentID jobID  counter  StepID
0      A        B     D      0.0     NaN
1      E        F     G      0.0     NaN
2      A        C     D      0.0     NaN
3      E        B     F      0.0     NaN
4      E        F     G      0.0     NaN
5      A        B   NaN      NaN     1.0
6      A        F   NaN      NaN     2.0
7      A        C   NaN      NaN     3.0
8      E        B   NaN      NaN     4.0
9      E        F   NaN      NaN     5.0

注意:熊猫有一个不幸的副作用,就是将包含NaN的数字列转换为浮点数据类型。

如果我们使用
append
,情况是否相同?使用concat有什么好处?非常感谢。是的,请参见。如果我们使用
append
,是否相同?使用concat有什么好处?非常感谢。是的,看。