I have two DataFrames:
d1 = {"col1" : ['A', 'B', 'C'],
"Col2": ["home", "car","banana" ]}
d2 = {"col1" : ['D', 'F','C'],
"Col2": ["garden", "boat","banana" ]}
df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)
new_df = pd.merge(df1, df2, on ='col1', how='outer')
new_df
What I am trying to do is highlight the third row "banana" that was found in the two DataFrames. I was using the Styling documentation to find a solution but no luck. I was able to highlight only a single row, but when I have multiple rows it doesn't work.
In case you want to highlight two rows (say index 2 and 4) it is a almost a duplicate of this answer
new_df.style.apply(lambda x: ['background: lightgreen' if x.name in [2,4]
else '' for i in x],
axis=1)
If instead you are looking to highlight every row that contain a given name in a list (i.e. lst = ['car', 'boat']
) you can use
new_df.style.apply(lambda x: ['background: lightgreen' if (set(lst).intersection(x.values))
else '' for i in x],
axis=1)