gpt4 book ai didi

python - 屏蔽列名等于索引的单元格( Pandas )

转载 作者:行者123 更新时间:2023-12-04 00:19:16 24 4
gpt4 key购买 nike

我想屏蔽掉索引与列名相同的 Pandas DataFrame 中的值。例如:

import pandas as pd
import numpy as np

a = pd.DataFrame(np.arange(12).reshape((4, 3)),
index=["a", "b", "c", "d"],
columns=["a", "b", "c"])

a b c
a 0 1 2
b 3 4 5
c 6 7 8
d 9 10 11

屏蔽后:

   a   b   c
a NaN 1 2
b 3 NaN 5
c 6 7 NaN
d 9 10 11

看起来很简单,但我不知道如何以 Pythonic 的方式进行,无需迭代。

最佳答案

尝试使用 pd.DataFrame.apply将条件应用于与具有系列/列名称的索引匹配的每个数据框列。应用的结果是一个 bool 数据帧并使用 pd.Dataframe.mask :

a.mask(a.apply(lambda x: x.name == x.index))

输出:

     a     b     c
a NaN 1.0 2.0
b 3.0 NaN 5.0
c 6.0 7.0 NaN
d 9.0 10.0 11.0

另外,inspired by @QuangHoang你可以使用 np.equal.outer:

a.mask(np.equal.outer(a.index, a.columns)) 

输出:

     a     b     c
a NaN 1.0 2.0
b 3.0 NaN 5.0
c 6.0 7.0 NaN
d 9.0 10.0 11.0

关于python - 屏蔽列名等于索引的单元格( Pandas ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61876422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com