我有一个单列 Pandas 数据框:
s =
VALUE
INDEX
A 12
B 21
C 7
...
Y 21
Z 7
我想把它变成一个具有相同索引和列的方阵掩码,如果列和索引的值相同,则每个s.index
元素都相同。True
s
False
mask =
A B C ... Y Z
A True False False ... False False
B False True False ... True False
C False False True ... False True
...
Y False True False ... True False
Z False False True ... False True
我的实际s
有 10K+ 行。生成该mask
DataFrame 的最快方法是什么?
我尝试过的一种方法是创建一个带有两个for
循环的 2 级字典。(例如dict['A']['B'] = dict['B']['A'] = True if s.loc['A'] == s.loc['B'] else False
,等)。然后将底层转换dict
为 Pandas 系列(例如row = pd.Series(dict[A])
),然后将该系列附加到mask
. mask
逐行迭代构造。
这需要很长时间,并且必须显式循环遍历 10K x 10K / 2 = 50M 元素……不理想?