我有两个 Dataframe df1和df2。我想用黄色突出显示df1中同时存在于df2中的所有行。
df1
df2
What I want to achive
到目前为止,我只找到了这样的解决方案:插入另一行,并在其中使用一个变量来标识要着色的行。
我的问题是是否可以在下面的函数中直接比较这两个df。
这是两个df:
df1 = pd.DataFrame([['AA',3,'hgend',1], ['BB','frdf',7,2], ['C1',4,'asef',4], ['C2',4,'asef',4], ['C3',4,'asef',4]], columns=list("ABCD"))
df2 = pd.DataFrame([['C1',4,'asef',4], ['C2',4,'asef',4], ['C3',4,'asef',4]], columns=list("XYZQ"))
这是我的代码着色行:
def highlight_rows(row):
value = row.loc['A']
if value == 'C1':
color = 'yellow'
else:
color = ''
return ['background-color: {}'.format(color) for r in row]
df1.style.apply(highlight_rows, axis=1)
正如我所说的,如果我事先做比较,插入另一列并在那里放置一个变量,我就可以搜索这个变量并突出显示该行。我的问题是我是否也可以直接在函数中做这件事。要做到这一点,我必须能够在函数中比较两个df。这可能吗?能够比较单行就足够了,例如,与.isin
1条答案
按热度按时间ql3eal8s1#
与函数内部的
df2
相比,效率很低。您可以定义一个临时列来使用合并来标识匹配项(指示符列
in_1
将变为left_only
或both
,具体取决于该行是否存在于df2
中),然后它将被styler忽略:或者,要在函数内部实际执行比较,请预先定义一组
df2
行的元组: