pandas DataFrame concat / update (“upsert”)?

后端 未结 2 1632
天涯浪人
天涯浪人 2020-12-13 15:02

I am looking for an elegant way to append all the rows from one DataFrame to another DataFrame (both DataFrames having the same index and column structure), but in cases whe

2条回答
  •  离开以前
    2020-12-13 15:07

    One solution is to conatenate df1 with new rows in df2 (i.e. where the index does not match). Then update the values with those from df2.

    df = pd.concat([df1, df2[~df2.index.isin(df1.index)]])
    df.update(df2)
    
    >>> df
                 A   B
    2015-10-01  A1  B1
    2015-10-02  a1  b1
    2015-10-03  a2  b2
    2015-10-04  a3  b3
    

    EDIT: Per the suggestion of @chrisb, this can further be simplified as follows:

    pd.concat([df1[~df1.index.isin(df2.index)], df2])
    

    Thanks Chris!

提交回复
热议问题