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
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!