Home > database >  how to extract values from previous dataframe based on row and column condition?
how to extract values from previous dataframe based on row and column condition?

Time:10-19

sorry for my naive, but i can't solve this. any reference or solution ?

df1 =

              date  a   b   c
    0   2011-12-30  100 400 700
    1   2021-01-30  200 500 800
    2   2021-07-30  300 600 900

df2 =

          date  c   b
0   2021-07-30  NaN NaN
1   2021-01-30  NaN NaN
2   2011-12-30  NaN NaN

desired output:

          date  c   b
0   2021-07-30  900 600
1   2021-01-30  800 500
2   2011-12-30  700 400

CodePudding user response:

Use DataFrame.fillna with convert date to indices in both DataFrames:

df = df2.set_index('date').fillna(df1.set_index('date')).reset_index()
print (df)
         date      c      b
0  2021-07-30  900.0  600.0
1  2021-01-30  800.0  500.0
2  2011-12-30  700.0  400.0

CodePudding user response:

You can reindex_like df2 after setting date a temporary index:

out = df1.set_index('date').reindex_like(df2.set_index('date')).reset_index()

output:

         date    c    b
0  2021-07-30  900  600
1  2021-01-30  800  500
2  2011-12-30  700  400

CodePudding user response:

Another possible solution, using pandas.DataFrame.update:

df2 = df2.set_index('date')
df2.update(df1.set_index('date'))
df2.reset_index()

Output:

         date      c      b
0  2021-07-30  900.0  600.0
1  2021-01-30  800.0  500.0
2  2011-12-30  700.0  400.0
  • Related