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
In addition to the correct answer, watch out for columns that do not exist in both dataframes:
df1 = pd.DataFrame([['test',1, True], ['test2',2, True]]).set_index(0)
df2 = pd.DataFrame([['test2',4], ['test3',3]]).set_index(0)
If you just use the aforementioned solution as-is, you get:
>>> 1 2
0
test 1 True
test2 4 NaN
test3 3 NaN
But if you are expecting the following output:
>>> 1 2
0
test 1 True
test2 4 True
test3 3 NaN
Just change the statement to:
df1 = pd.concat([df1, df2[~df2.index.isin(df1.index)]])
df1.update(df2)