What I want to achieve
import pandas as pd
data = [[1, 2], [3, 4]]
index1 = ['I1', 'I2']
index2 = ['I1', 'I3']
columns = ['C1', 'C2']
df1 = pd.DataFrame(data, index=index1, columns=columns)
df2 = pd.DataFrame(data, index=index2, columns=columns)
print(df1)
# C1 C2
#I1 1 2
#I2 3 4
print(df2)
# C1 C2
#I1 1 2
#I3 3 4
print(...) # Calculate somehow
## !!!!!Expected Result!!!!!
# C1 C2
#I1 2 4
#I2 3 4
#I3 3 4
The expected result is a dataframe whose values are like below.
- I1: the sum of two dataframes because both
df1anddf2have a row named'I1'. - I2: use the value of
df1.loc['I2']becausedf2doesn't have this index. - I3: use the value of
df2.loc['I3']becausedf1doesn't have this index.
What I tested
print(df1.add(df2, axis='index'))
# C1 C2
#I1 2.0 4.0
#I2 NaN NaN
#I3 NaN NaN
print(pd.concat([df1, df2]))
# C1 C2
#I1 1 2
#I2 3 4
#I1 1 2
#I3 3 4
print(df1 + df2.values)
# C1 C2
#I1 2 4
#I2 6 8
Could you help me get the expect result?