如何将Pandas中的非零条目转换为带有列表的dict?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Pandas中的非零条目转换为带有列表的dict?相关的知识,希望对你有一定的参考价值。
假设我现在有一个面具
mask = df.DataFrame([[0, 0, 1], [1, 1, 0], [0, 0, 1]])
实际上,qazxsw poi是
mask
此外,我有一个像分数矩阵
0 1 2
0 0 0 1
1 1 1 0
2 0 0 1
即
score = df.DataFrame([[0.5, 0.3, 0.2], [0.1, 0.9, 0.7], [0.5, 0.4, 0.8]])
我只想在 0 1 2
0 0.5 0.3 0.2
1 0.1 0.9 0.7
2 0.5 0.4 0.8
中保留score
的条目与“true”,即结果应该是
mask
最后,我需要将结果转换为带有列表的dict
0 1 2
0 0 0 0.2
1 0.1 0.9 0
2 0 0 0.8
我怎么能以Pythonic的方式做?谢谢!
使用result = {0: {2: 0.2}, 1: {0: 0.1, 1: 0.9}, 2: {2: 0.8}}
与铸造DataFrame.where
掩码布尔值:
0,1
然后转换为字典并删除嵌套字典中的print (score.where(mask.astype(bool), 0))
0 1 2
0 0.0 0.0 0.2
1 0.1 0.9 0.0
2 0.0 0.0 0.8
值:
0
由d = score.where(mask.astype(bool), 0).to_dict(orient='index')
d = {k:{k1:v1 for k1, v1 in v.items() if v1 != 0} for k, v in d.items()}
print (d)
{0: {2: 0.2}, 1: {0: 0.1, 1: 0.9}, 2: {2: 0.8}}
重塑的另一个想法,并将不匹配的值替换为DataFrame.stack
:
NaN
以上是关于如何将Pandas中的非零条目转换为带有列表的dict?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 2 个列表的列表转换为 pandas 中的 2 列 df
如何将 DataFrame 中的每一行/单元格值转换为 pandas 中的字典列表?