Appending two dataframes with same columns, different order

前端 未结 3 1698
梦毁少年i
梦毁少年i 2021-02-01 14:23

I have two pandas dataframes.

noclickDF = DataFrame([[0,123,321],[0,1543,432]], columns=[\'click\', \'id\',\'location\'])
clickDF = DataFrame([[1,123,421],[1,154         


        
相关标签:
3条回答
  • 2021-02-01 15:15

    For future users (sometime >pandas 0.23.0):

    You may also need to add sort=True to sort the non-concatenation axis when it is not already aligned (i.e. to retain the OP's desired concatenation behavior). I used the code contributed above and got a warning, see Python Pandas User Warning. The code below works and does not throw a warning.

    In [36]: pd.concat([noclickDF, clickDF], ignore_index=True, sort=True)
    Out[36]: 
       click    id  location
    0      0   123       321
    1      0  1543       432
    2      1   421       123
    3      1   436      1543
    
    0 讨论(0)
  • 2021-02-01 15:18

    You can use append for that

     df = noclickDF.append(clickDF)
     print df 
    
        click    id  location
     0      0   123       321  
     1      0  1543       432
     0      1   421       123
     1      1   436      1543
    

    and if you need you can reset the index by

    df.reset_index(drop=True)
    print df
       click    id  location
    0      0   123       321
    1      0  1543       432
    2      1   421       123
    3      1   436      1543
    
    0 讨论(0)
  • 2021-02-01 15:21

    You could also use pd.concat:

    In [36]: pd.concat([noclickDF, clickDF], ignore_index=True)
    Out[36]: 
       click    id  location
    0      0   123       321
    1      0  1543       432
    2      1   421       123
    3      1   436      1543
    

    Under the hood, DataFrame.append calls pd.concat. DataFrame.append has code for handling various types of input, such as Series, tuples, lists and dicts. If you pass it a DataFrame, it passes straight through to pd.concat, so using pd.concat is a bit more direct.

    0 讨论(0)
提交回复
热议问题