df.map() 在另一个 df.apply() 中的行为

问题描述 投票:0回答:1

我发现这个代码非常有趣。我稍微修改了代码以改善问题。本质上,该代码使用一个 DataFrame 使用

pd.style
来格式化另一个 DataFrame 的样式。

t1 = pd.DataFrame({'x':[300,200,700], 'y':[100,300,200]})
t2 = pd.DataFrame({'x':['A','B','C'], 'y':['C','B','D']})

def highlight_cell(val, props=''):
    return props if val > 200 else ''
    
t2.style.apply(lambda x: t1.map(highlight_cell, props='background-color:yellow'), axis=None)

enter image description here

但是有人能解释一下最后一行是如何工作的吗?我找不到 Pandas 文档来阐明

df.map()
在另一个
df.apply()
中的行为。

对我来说,代码读起来就像 对于 t1 中的每个项目,立即将

highlight_cell()
应用于整个 t2,就像这个伪代码一样。

for x in all_items_in_t1:
    yield [highlight_cell(y) for y in all_items_in_t2]

但是,输出表示 对于 t1 中的每个项目,仅将

highlight_cell()
应用于 t2 中与 t1 中该项目具有相同 (x, y) 位置的相应项目,如下所示。

for x, y in zip(all_items_in_t1, all_items_in_t2):
    yield highlight_cell(y)

我仍然无法理解这种模式,因为它看起来有点令人困惑。谁能解释得更清楚一点吗

python pandas
1个回答
0
投票
这里用的是

DataFrame.style.apply
,而不是
DataFrame.apply

通过使用参数

axis=None
,可调用对象应用于整个DataFrame。由于可调用对象是 lambda,这本质上意味着我们运行:

t1.map(highlight_cell, props='background-color:yellow')

并使用输出作为格式。

                         x                        y
0  background-color:yellow                         
1                           background-color:yellow
2  background-color:yellow                         
© www.soinside.com 2019 - 2024. All rights reserved.