0

I have created 2 Pandas DataFrame

DataFrame1 Image

DataFrame2 Image

DataFrame1.Number contains wrong values but DataFrame2.Number contains right values.

I want to replace value of DataFrame1.Number to values in DataFrame2.Number if all the columns values gets matched, i.e.

DataFrame2.Name == DataFrame1.Name and
DataFrame2.Value1 == DataFrame1.Value1 and
DataFrame2.Value2 == DataFrame1.Value2 and
DataFrame2.Value3 == DataFrame1.Value3 and
DataFrame2.Value4 == DataFrame1.Value4

Expected Result in DataFrame1: DataFrame1 Expected Result Image

I am unable to achieve required result. Please Help!!!

  • 1
    Can you try and post your data in a [reproducible](https://stackoverflow.com/questions/52413246/how-to-provide-a-reproducible-copy-of-your-dataframe-with-to-clipboard) format please? No one will spend time recreating your datasets from scratch. – sophocles Apr 02 '21 at 10:15

2 Answers2

0
df3=pd.merge(d1,df2, how='left', on='Name')

Also please review pd.merge

Eren Han
  • 321
  • 3
  • 10
0

Use pandas.DataFrame.merge() to merge on Name, Value1, Value2, Value3 and Value4 columns, then use pandas.DataFrame.update() to update df1 Number column according to the merged Number_y column which is from the df2 dataframe.

df1["Number"].update(df1.merge(df2, on=["Name", "Value1", "Value2", "Value3", "Value4"], how="outer")["Number_y"])
Ynjxsjmh
  • 28,441
  • 6
  • 34
  • 52